Giới hạn trên của các bản ghi cho bảng cơ sở dữ liệu MySQL là gì. Tôi đang tự hỏi về lĩnh vực tự động. Điều gì sẽ xảy ra nếu tôi thêm hàng triệu hồ sơ? Làm thế nào để xử lý loại tình huống này? Cám ơn!
Giới hạn trên của các bản ghi cho bảng cơ sở dữ liệu MySQL là gì. Tôi đang tự hỏi về lĩnh vực tự động. Điều gì sẽ xảy ra nếu tôi thêm hàng triệu hồ sơ? Làm thế nào để xử lý loại tình huống này? Cám ơn!
Câu trả lời:
Các kiểu int mysql có thể thực hiện khá nhiều hàng: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
unsigned int
giá trị lớn nhất là 4,294,967,295
unsigned bigint
giá trị lớn nhất là18,446,744,073,709,551,615
Giá trị lớn nhất của một số nguyên ít liên quan đến số lượng hàng tối đa bạn có thể lưu trữ trong một bảng.
Đúng là nếu bạn sử dụng int hoặc bigint làm khóa chính, bạn chỉ có thể có nhiều hàng bằng số giá trị duy nhất trong kiểu dữ liệu của khóa chính, nhưng bạn không phải biến khóa chính của mình thành số nguyên , bạn có thể biến nó thành CHAR (100). Bạn cũng có thể khai báo khóa chính trên nhiều cột.
Có các ràng buộc khác về kích thước bảng bên cạnh số lượng hàng. Chẳng hạn, bạn có thể sử dụng một hệ điều hành có giới hạn kích thước tệp. Hoặc bạn có thể có một ổ cứng 300 GB chỉ có thể lưu trữ 300 triệu hàng nếu mỗi hàng có kích thước 1KB.
Giới hạn của kích thước cơ sở dữ liệu là rất cao:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
Công cụ lưu trữ MyISAM hỗ trợ 2 32 hàng mỗi bảng, nhưng bạn có thể xây dựng MySQL với --with-big-tables
tùy chọn để hỗ trợ tối đa 2 64 hàng mỗi bảng.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
Công cụ lưu trữ InnoDB dường như không có giới hạn về số lượng hàng, nhưng nó có giới hạn về kích thước bảng là 64 terabyte. Có bao nhiêu hàng phù hợp với điều này phụ thuộc vào kích thước của mỗi hàng.
Tôi đề nghị, không bao giờ xóa dữ liệu. Đừng nói nếu các bảng dài hơn 1000 cắt ngắn cuối bảng. Cần phải có logic kinh doanh thực sự trong kế hoạch của bạn như người dùng này đã không hoạt động được bao lâu. Ví dụ, nếu nó dài hơn 1 năm thì đặt chúng vào một bảng khác. Bạn sẽ có điều này xảy ra hàng tuần hoặc hàng tháng trong một kịch bản bảo trì vào giữa thời gian chậm.
Khi bạn chạy vào nhiều hàng trong bảng thì bạn nên bắt đầu bảo vệ các bảng hoặc phân vùng và đưa dữ liệu cũ vào các bảng cũ theo năm như users_2011_jan, users_2011_feb hoặc sử dụng số cho tháng. Sau đó thay đổi chương trình của bạn để làm việc với mô hình này. Có thể tạo một bảng mới với ít thông tin hơn để tóm tắt dữ liệu trong ít cột hơn và sau đó chỉ tham khảo các bảng được phân vùng lớn hơn khi bạn cần thêm thông tin như khi người dùng đang xem hồ sơ của họ. Tất cả điều này nên được xem xét rất cẩn thận để trong tương lai nó không quá đắt để tái lập yếu tố. Bạn cũng có thể chỉ đặt những người dùng đến trang web của bạn mọi lúc trong một bảng và những người dùng không bao giờ đến trong một tập hợp các bảng được lưu trữ.
Trong InnoDB, với giới hạn về kích thước bảng là 64 terabyte và giới hạn kích thước hàng của MySQL là 65.535, có thể có 1.073.741.824 hàng. Đó sẽ là số lượng bản ghi tối thiểu sử dụng giới hạn kích thước hàng tối đa. Tuy nhiên, nhiều bản ghi có thể được thêm vào nếu kích thước hàng nhỏ hơn.
Theo phần Khả năng mở rộng và Giới hạn trong http://dev.mysql.com/doc/refman/5.6/en/features.html , hỗ trợ MySQL cho cơ sở dữ liệu lớn. Họ sử dụng Máy chủ MySQL với cơ sở dữ liệu chứa 50 triệu hồ sơ. Một số người dùng sử dụng Máy chủ MySQL với 200.000 bảng và khoảng 5.000.000.000 hàng.
The maximum row size for a given table is determined by several factors:
Biểu diễn bên trong của bảng MySQL có giới hạn kích thước hàng tối đa là 65.535 byte, ngay cả khi công cụ lưu trữ có khả năng hỗ trợ các hàng lớn hơn. Các cột BLOB và TEXT chỉ đóng góp 9 đến 12 byte cho giới hạn kích thước hàng vì nội dung của chúng được lưu trữ riêng biệt với phần còn lại của hàng.
Kích thước hàng tối đa cho bảng InnoDB, áp dụng cho dữ liệu được lưu trữ cục bộ trong trang cơ sở dữ liệu, nhỏ hơn một nửa trang. Ví dụ: kích thước hàng tối đa nhỏ hơn 8KB một chút đối với kích thước trang InnoDB 16KB mặc định, được xác định bởi tùy chọn cấu hình innodb_page_size. “ Hạn chế đối với InnoDB Bàn ”.
Liên kết http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Giới hạn kích thước hàng
Kích thước hàng tối đa cho một bảng nhất định được xác định bởi một số yếu tố:
Biểu diễn bên trong của bảng MySQL có giới hạn kích thước hàng tối đa là 65.535 byte, ngay cả khi công cụ lưu trữ có khả năng hỗ trợ các hàng lớn hơn. Các cột BLOB và TEXT chỉ đóng góp 9 đến 12 byte cho giới hạn kích thước hàng vì nội dung của chúng được lưu trữ riêng biệt với phần còn lại của hàng.
Kích thước hàng tối đa cho bảng InnoDB, áp dụng cho dữ liệu được lưu trữ cục bộ trong trang cơ sở dữ liệu, nhỏ hơn một nửa trang cho các cài đặt innodb_page_size 4KB, 8KB, 16KB và 32KB. Ví dụ: kích thước hàng tối đa nhỏ hơn 8KB một chút đối với kích thước trang InnoDB 16KB mặc định. Đối với các trang 64KB, kích thước hàng tối đa nhỏ hơn 16KB một chút. Xem Phần 15.8.8, Giới hạn của những người trên Bảng InnoDB.
Nếu một hàng chứa các cột có độ dài thay đổi vượt quá kích thước hàng tối đa của InnoDB, InnoDB sẽ chọn các cột có độ dài thay đổi để lưu trữ ngoài trang cho đến khi hàng phù hợp với giới hạn kích thước hàng của InnoDB. Lượng dữ liệu được lưu trữ cục bộ cho các cột có độ dài thay đổi được lưu ngoài trang khác nhau theo định dạng hàng. Để biết thêm thông tin, hãy xem Phần 15.11, Lưu trữ Hàng InnoDB và Định dạng Hàng Row.
Các định dạng lưu trữ khác nhau sử dụng lượng dữ liệu tiêu đề và đoạn giới thiệu trang khác nhau, điều này ảnh hưởng đến lượng lưu trữ có sẵn cho các hàng.
Để biết thông tin về các định dạng hàng của InnoDB, hãy xem Phần 15.11, Bộ lưu trữ hàng và định dạng hàng InnoDB, và Phần 15.8.3, Cấu trúc hàng vật lý của InnoDB.
Để biết thông tin về các định dạng lưu trữ MyISAM, xem Phần 16.2.3, Định dạng lưu trữ bảng MyISAM Định dạng.
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Không có giới hạn. Nó chỉ phụ thuộc vào bộ nhớ miễn phí và kích thước tệp tối đa của hệ thống. Nhưng điều đó không có nghĩa là bạn không nên thực hiện biện pháp phòng ngừa trong việc giải quyết việc sử dụng bộ nhớ trong cơ sở dữ liệu của mình. Luôn tạo một tập lệnh có thể xóa các hàng không sử dụng hoặc sẽ giữ tổng số hàng trong một con số cụ thể, giả sử là một nghìn.