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

NULL trong MySQL (Hiệu suất &Lưu trữ)

Nó phụ thuộc vào công cụ lưu trữ bạn sử dụng.

Ở định dạng MyISAM, mỗi tiêu đề hàng chứa một trường bit với một bit cho mỗi cột để mã hóa trạng thái NULL. Một cột NULL vẫn chiếm dung lượng, vì vậy NULL không làm giảm bộ nhớ. Xem https://dev.mysql.com/doc/internals/ vi / myisam-Introduction.html

Trong InnoDB, mỗi cột có một "độ lệch đầu trường" trong tiêu đề hàng, là một hoặc hai byte cho mỗi cột. Bit cao trong trường đó bù bắt đầu được bật nếu cột là NULL. Trong trường hợp đó, cột không cần phải được lưu trữ. Vì vậy, nếu bạn có nhiều NULL thì dung lượng lưu trữ của bạn sẽ giảm đáng kể. Xem https://dev.mysql.com/doc/internals/en/innodb-field-contents.html

CHỈNH SỬA:

Các bit NULL là một phần của tiêu đề hàng, bạn không chọn thêm chúng.

Cách duy nhất tôi có thể tưởng tượng NULL cải thiện hiệu suất là trong InnoDB, một trang dữ liệu có thể phù hợp với nhiều hàng hơn nếu các hàng chứa NULL. Vì vậy, bộ đệm InnoDB của bạn có thể hiệu quả hơn.

Nhưng tôi sẽ rất ngạc nhiên nếu điều này mang lại một lợi thế hiệu suất đáng kể trong thực tế. Lo lắng về ảnh hưởng của NULL đối với hiệu suất là trong lĩnh vực tối ưu hóa vi mô. Bạn nên tập trung sự chú ý của mình ở nơi khác, vào những khu vực mang lại tiếng vang lớn hơn cho đồng tiền. Ví dụ:thêm các chỉ mục được chọn tốt hoặc tăng phân bổ bộ nhớ cache của cơ sở dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LAST_INSERT_ID () MySQL

  2. pt-query-inherit Alternatives - Quản lý và giám sát truy vấn MySQL với ClusterControl

  3. Cách khôi phục cơ sở dữ liệu MySQL từ các tệp .myd, .myi, .frm

  4. Tính tổng các giá trị của mảng nhiều chiều theo khóa không có vòng lặp

  5. Tìm kiếm đối sánh toàn bộ từ trong MySQL