Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Định dạng hàng MySQL:Sự khác biệt giữa cố định và động?

Sự khác biệt thực sự chỉ quan trọng đối với MyISAM, các công cụ lưu trữ khác không quan tâm đến sự khác biệt. CHỈNH SỬA: Nhiều người dùng nhận xét rằng InnoDB thực sự quan tâm: liên kết 1 của hấp thụ , liên kết 2 của Kaan .

Với MyISAM với các hàng có chiều rộng cố định, có một số ưu điểm sau:

  1. Không phân mảnh hàng:Có thể với các hàng có chiều rộng thay đổi để chia các hàng đơn thành nhiều phần trên tệp dữ liệu. Điều này có thể làm tăng tìm kiếm đĩa và làm chậm hoạt động. Có thể chống phân mảnh nó bằng BẢNG TỐI ƯU HÓA, nhưng điều này không phải lúc nào cũng thực tế.

  2. Kích thước con trỏ tệp dữ liệu:Trong MyISAM, có một khái niệm về con trỏ tệp dữ liệu được sử dụng khi nó cần tham chiếu đến tệp dữ liệu. Ví dụ, điều này được sử dụng trong các chỉ mục khi chúng đề cập đến vị trí hàng thực sự hiện diện. Với kích thước chiều rộng cố định, con trỏ này dựa trên độ lệch hàng trong tệp (nghĩa là các hàng là 1, 2, 3 bất kể kích thước của chúng là bao nhiêu). Với chiều rộng thay đổi, con trỏ dựa trên độ lệch byte (ví dụ:các hàng có thể là 1, 57, 163). Kết quả là với các bảng lớn, con trỏ cần phải lớn hơn, khi đó con trỏ có khả năng tăng thêm nhiều chi phí cho bảng.

  3. Dễ dàng sửa chữa hơn trong trường hợp tham nhũng. Vì mọi hàng đều có cùng kích thước, nếu bảng MyISAM của bạn bị hỏng thì việc sửa chữa sẽ dễ dàng hơn nhiều, vì vậy bạn sẽ chỉ mất dữ liệu thực sự bị hỏng. Với chiều rộng thay đổi, về lý thuyết, có thể các con trỏ có chiều rộng thay đổi bị lộn xộn, điều này có thể dẫn đến việc lưu trữ dữ liệu theo cách không tốt.

Bây giờ nhược điểm chính của chiều rộng cố định là nó lãng phí nhiều không gian hơn. Ví dụ:bạn cần sử dụng trường CHAR thay vì trường VARCHAR, vì vậy bạn sẽ bị chiếm dụng thêm dung lượng.

Thông thường, bạn sẽ không có nhiều lựa chọn về định dạng, vì nó được xác định dựa trên lược đồ. Tuy nhiên, nó có thể đáng giá nếu bạn chỉ có một vài varchar hoặc một blob / văn bản duy nhất để cố gắng tối ưu hóa theo hướng này. Ví dụ:hãy xem xét chuyển varchar duy nhất thành một char hoặc chia blob thành bảng riêng của nó.

Bạn có thể đọc thêm về điều này tại:

http://dev.mysql.com/doc/refman /5.0/en/static-format.html

http://dev.mysql.com/doc/refman /5.0/en/dynamic-format.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem có tồn tại không, nếu có, hãy cập nhật bằng 1 ++, nếu không chèn

  2. lệnh cập nhật bị từ chối cho người dùng

  3. Phân biệt so với Nhóm theo

  4. Làm cách nào để lấy múi giờ hiện tại của MySQL?

  5. Kiên trì và không liên tục - Tôi nên sử dụng cái nào?