2010-05-06 47 views
27

Tôi đã đọc Câu hỏi thường gặp về giới hạn của họ, họ nói về nhiều giới hạn ngoại trừ giới hạn của toàn bộ cơ sở dữ liệu.có giới hạn về kích thước của cơ sở dữ liệu SQLite không?

+0

Cũng thấy [số tối đa số hàng-trong-một-sqlite-bảng] (http: // stackoverflow.com/questions/1546947/maximum-number-of-rows-in-a-sqlite-table) – nawfal

+0

Xin hãy xem http://www.chqlite.org/limits.html doc của riêng chúng. Và cũng có thể là http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Limits – VivekDev

+1

Ngoài ra [Can SQLite có thể xử lý gigabyte dữ liệu không?] (Https://www.quora.com/Can-SQLite-handle-gigabytes -of-data) và http://stackoverflow.com/q/3160987/632951 và http://stackoverflow.com/q/784173/632951 cho các giới hạn thực tế. – Pacerier

Trả lời

36

này là khá dễ dàng suy ra từ trang implementation limits:

Một SQLite tập tin cơ sở dữ liệu được tổ chức như trang. Kích thước của mỗi trang là sức mạnh của 2 giữa 512 và SQLITE_MAX_PAGE_SIZE. Giá trị mặc định cho SQLITE_MAX_PAGE_SIZE là 32768.

...

Tham số SQLITE_MAX_PAGE_COUNT, mà thường được đặt thành 1073741823, là số lượng tối đa cho phép các trang trong một tập tin cơ sở dữ liệu duy nhất. Một nỗ lực để chèn dữ liệu mới mà có thể gây ra các tập tin cơ sở dữ liệu để phát triển lớn hơn này sẽ trả về SQLITE_FULL.

Vì vậy, chúng tôi có 32768 * 1073741823, đó là 35,184,372,056,064 (35 nghìn tỷ bytes)!

Bạn có thể sửa đổi SQLITE_MAX_PAGE_COUNT hoặc SQLITE_MAX_PAGE_SIZE trong nguồn, nhưng điều này tất nhiên sẽ yêu cầu xây dựng SQLite tùy chỉnh cho ứng dụng của bạn. Theo như tôi biết, không có cách nào để thiết lập một giới hạn lập trình khác ngoài thời gian biên dịch (nhưng tôi sẽ rất vui khi được chứng minh là sai).

+4

chỉ để cập nhật giới hạn ngày hôm nay (2014) theo trang Giới hạn triển khai (http://www.sqlite.org/limits.html): giới hạn hiện tại khoảng 140 terabyte (kích thước trang tối đa = 65536 và giới hạn 2.147.483.646 trang trên mỗi cơ sở dữ liệu) – laurent

+0

Bạn cũng sẽ phải sống với giới hạn của hệ điều hành đối với kích thước thư mục và tệp, v.v. – ZuLu

18

Nó có new limits, bây giờ giới hạn kích thước cơ sở dữ liệu là 128TB:

Mỗi cơ sở dữ liệu bao gồm một hoặc nhiều "trang". Trong một cơ sở dữ liệu duy nhất, mỗi trang có cùng kích thước, nhưng cơ sở dữ liệu khác nhau có thể có kích thước trang là sức mạnh của hai từ 512 đến 65536, bao gồm. Kích thước tối đa của một tệp cơ sở dữ liệu là 2147483646 trang. Ở kích thước trang tối đa là 65536 byte, điều này sẽ chuyển thành kích thước cơ sở dữ liệu tối đa khoảng 1,4e + 14 byte (140 terabyte hoặc 128 tbibyte hoặc 140.000 gigabyte hoặc 128.000 gibibyte).

Giới hạn trên cụ thể này chưa được kiểm tra vì các nhà phát triển không có quyền truy cập vào phần cứng có khả năng đạt đến giới hạn này. Tuy nhiên, các bài kiểm tra xác minh rằng SQLite hoạt động chính xác và an toàn khi một cơ sở dữ liệu đạt kích thước tệp tối đa của hệ thống tệp cơ bản (thường nhỏ hơn nhiều so với kích thước cơ sở dữ liệu lý thuyết tối đa) và khi cơ sở dữ liệu không thể phát triển do cạn kiệt không gian đĩa.

0

Số byte tối đa trong chuỗi hoặc BLOB trong SQLite được xác định bằng macro tiền xử lý SQLITE_MAX_LENGTH. Giá trị mặc định của macro này là 1 tỷ (1 nghìn triệu hoặc 1.000.000.000).

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

Cài đặt mặc định cho SQLITE_MAX_COLUMN là 2000. Bạn có thể thay đổi nó tại thời gian biên dịch với giá trị lớn như 32767. Trên Mặt khác, nhiều nhà thiết kế cơ sở dữ liệu có kinh nghiệm sẽ lập luận rằng một cơ sở dữ liệu được chuẩn hóa tốt sẽ không bao giờ cần nhiều hơn 100 cột trong một bảng.

SQLite không hỗ trợ các kết nối có chứa hơn 64 bảng.

Số lượng tối đa lý thuyết của các hàng trong một bảng là 264 (18446744073709551616 hoặc khoảng 1,8e + 19). Giới hạn này không thể truy cập được vì kích thước cơ sở dữ liệu tối đa 140 terabyte sẽ đạt được trước tiên.

Kích thước tối đa của DB: 140 terabyte

Vui lòng kiểm tra URL để biết thêm: https://www.sqlite.org/limits.html

0

Mặc dù đây là một câu hỏi cũ, nhưng hãy để tôi chia sẻ phát hiện của tôi cho những người đạt được câu hỏi này.

Mặc dù tài liệu Sqlite nói rằng kích thước tệp cơ sở dữ liệu tối đa là ~ 140 terabyte nhưng hệ điều hành của bạn áp đặt các hạn chế riêng đối với kích thước tệp tối đa cho bất kỳ loại tệp nào.

Ví dụ: nếu bạn đang sử dụng đĩa FAT32 trên Windows, kích thước tệp tối đa mà tôi có thể đạt được cho sqLite là 2GB. (Theo trang web của Microsoft, giới hạn trên hệ thống FAT 32 là 4GB nhưng kích thước db sqlite của tôi bị giới hạn là 2GB). Trong khi trên Linux, tôi đã có thể đạt đến 3 GB (nơi tôi dừng lại. Nó có thể đạt kích thước lớn hơn)

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