2013-04-19 46 views

Trả lời

5

Không có cách nào để đọc giới hạn SQLite trong Android khi chạy. (SQLite có a function for this trong API C của nó, nhưng Android không tiết lộ điều này.)

Trong mọi trường hợp, tôi không biết bất kỳ nhà cung cấp Android nào đã giảm bất kỳ giới hạn của SQLite nào. (Thông thường, họ tăng một số giới hạn hoặc cho phép một số tùy chọn khi họ cần trong ứng dụng của riêng họ hoặc khi họ cố gắng tối ưu hóa, nhưng họ không bao giờ phải thay đổi điều gì khác.)

+0

OK. Cảm ơn. Điều này trả lời câu hỏi của tôi nhiều hơn so với ở trên, trong đó tôi không thể thực sự kiểm tra để xem nó có thể được dễ dàng bao lâu. Cảm ơn một lần nữa =). –

+0

Tôi muốn biết khía cạnh hiệu suất của các BLOB lớn so với lưu trữ tệp. – eRaisedToX

+1

@eRaisedToX Điều đó không liên quan gì đến câu hỏi này. Và đã được [tài liệu] (http://www.sqlite.org/intern-v-extern-blob.html). –

6

Chiều dài tối đa của một chuỗi hoặc BLOB

Số lượng tối đa của byte trong một chuỗi hoặc BLOB trong SQLite được xác định bởi SQLITE_MAX_LENGTH vĩ mô tiền xử lý. Giá trị mặc định của macro này là 1 tỷ (1 nghìn triệu hoặc 1.000.000.000). Bạn có thể tăng hoặc giảm giá trị này tại thời gian biên dịch bằng cách sử dụng dòng lệnh lựa chọn như thế này:

-DSQLITE_MAX_LENGTH=123456789 

Việc thực hiện sẽ chỉ hỗ trợ một chuỗi hoặc BLOB chiều dài lên đến 231-1 hoặc 2147483647. Và một số các hàm tích hợp như hex() có thể bị lỗi trước thời điểm đó. Trong các ứng dụng bảo mật nhạy cảm, tốt nhất là không nên cố gắng tăng chiều dài tối đa của chuỗi và chiều dài blob . Trên thực tế, bạn có thể làm tốt để giảm bớt số lượng tối đa là chuỗi và chiều dài của blob đến một thứ khác trong phạm vi số vài triệu nếu điều đó là có thể.

Trong quá trình xử lý INSERT và SELECT của SQLite, nội dung đầy đủ của mỗi hàng trong cơ sở dữ liệu được mã hóa thành một BLOB. Vì vậy, tham số SQLITE_MAX_LENGTH cũng xác định số lượng tối đa là byte liên tiếp.

Từ http://www.sqlite.org/limits.html.

+1

Tôi hiểu điều này, tuy nhiên, như ti nói, bạn có thể thay đổi nó thông qua tùy chọn dòng lệnh khi biên dịch. Vì vậy, câu hỏi đã được nhiều hơn, họ đã thay đổi nó, và nếu như vậy, giá trị mới của nó là gì? Hoặc, làm thế nào tôi có thể tìm hiểu xem họ đã làm hay không? –

Các vấn đề liên quan