Hãy so sánh chúng
KÍCH THƯỚC PHẦN
Nếu bạn có những điều sau đây:
- 100 triệu hàng trong một bảng
- Lập chỉ mục BTREE
- Mỗi trang trong BTREE chứa 1024 phím
Các số liệu sẽ trông như thế nào?
Vì LOG (100000000) / LOG (2) = 26.575424759099, chỉ số BTREE với 1024 khóa trên mỗi treenode sẽ có chiều cao cây chỉ 3 (CEILING (LOG (100000000) / LOG (1024))). Chỉ với ba nút trang, một tìm kiếm nhị phân cho khóa cần thiết trong mỗi treenode được truy cập sẽ dẫn đến việc cắt tỉa và cách ly khoảng 30 khóa.
SỐ PHẦN
Nếu bạn có những điều sau đây:
- 100 triệu hàng trong một bảng
- Lập chỉ mục BTREE
- Mỗi trang trong BTREE chứa 1024 phím
- Bạn tạo 1024 mệnh đề
Các con số sẽ hơi khác nhau.
Mỗi phân vùng nên có khoảng 97656 hàng. Những gì các số liệu sẽ trở thành bây giờ?
Vì LOG (97656) / LOG (2) = 16.575421065795, chỉ số BTREE có 1024 khóa trên mỗi treenode sẽ có chiều cao cây chỉ bằng 2 (CEILING (LOG (97656) / LOG (1024))). Chỉ với hai nút trang, một tìm kiếm nhị phân cho khóa cần thiết trong mỗi treenode được truy cập sẽ dẫn đến việc cắt tỉa và cách ly khoảng 20 khóa.
PHẦN KẾT LUẬN
Trải ra các khóa chỉ loại bỏ một cấp độ cây nhưng về cơ bản tạo ra 1024 chỉ mục. Các truy vấn sẽ không biết sự khác biệt. Thời gian tìm kiếm có thể là danh nghĩa tốt nhất cho các phân vùng. Tuy nhiên, hãy chắc chắn rằng tất cả các dữ liệu đang hoạt động. Mặt khác, bạn có thể chỉ nhấn một vài phân vùng, trong khi các phân vùng khác có dữ liệu hiếm khi truy cập chỉ chiếm không gian và không bao giờ được truy cập thường xuyên đủ để biện minh cho việc phân vùng . Bạn có thể có các số liệu hiệu suất khác nhau để lo lắng về điều đó rõ ràng hơn (chẳng hạn như phân mảnh nội bộ trong XFS , ext3 so với ext4, v.v.) Bạn cũng cần lo lắng về việc bạn đang sử dụng công cụ lưu trữ nào vì:
- Lập chỉ mục InnoDB sẽ rắc rối hơn một chút so với MyISAM do phải quản lý một chỉ mục được nhóm
- InnoDB thực hiện ghi hai lần dữ liệu trong ibdata1 cũng như tệp nhật ký hiện tại (ib_logfile0 hoặc ib_logfile1)