MariaDB Advance: InnoDB Buffer Pool

Nhóm bộ đệm XtraDB / InnoDB là thành phần chính để tối ưu hóa MariaDB. Nó lưu trữ dữ liệu và chỉ mục, và bạn thường muốn nó càng lớn càng tốt để giữ càng nhiều dữ liệu và indexes trong bộ nhớ, giảm IO đĩa, như là nút cổ chai (bottleneck).

Cách Buffer Pool hoạt động

Buffer Pool cố gắng giữ các khối được sử dụng thường xuyên trong bộ đệm và về cơ bản hoạt động như hai danh sách con, danh sách con mới của thông tin được sử dụng gần đây và danh sách con cũ của thông tin cũ. Theo mặc định, 37% danh sách được dành riêng cho danh sách cũ.

Khi thông tin mới được truy cập không xuất hiện trong danh sách nào cả, lúc đó nó sẽ được đặt ở đầu danh sách cũ, mục cũ nhất trong danh sách cũ sẽ bị xóa.

Khi thông tin được truy cập xuất hiện trong danh sách cũ, nó sẽ được chuyển lên đầu danh sách mới và mọi thứ ở trên sẽ di chuyển xuống một vị trí dưới thông tin vừa được nạp.

innodb_buffer_pool_size

Server system variable máy chủ quan trọng nhất là innodb_buffer_pool_size , bạn có thể đặt từ 70-80% tổng ram khả dụng trên một máy chủ cơ sở dữ liệu chuyên dụng chỉ có hoặc chủ yếu là các bảng XtraDB / InnoDB.

Lưu ý rằng tổng ram được phân bổ nhiều hơn khoảng 10% so với kích thước đã chỉ định vì không gian thêm cũng được dành cho các cấu trúc điều khiển và bộ đệm.

Kích thước càng lớn, thời gian khởi tạo càng lâu. Trên máy chủ 64 bit hiện đại có bộ nhớ 10GB, quá trình này có thể mất năm giây trở lên để khởi động.

Đảm bảo rằng kích thước Buffer Pool không quá lớn để tránh trường hợp không đủ ram dẫn đến hệ điều hành kill dịch vụ.

innodb_buffer_pool_instances

Nếu innodb_buffer_pool_size được đặt thành hơn 1GB, innodb_buffer_pool_instances chia nhóm bộ đệm InnoDB thành một số trường hợp cụ thể. Mặc định là 1 trong MariaDB 5.5, nhưng đối với các hệ thống lớn có vùng đệm nhiều gigabyte, nhiều trường hợp có thể giúp giảm sự tranh chấp. Mặc định là 8 trong MariaDB 10.0,   tùy thuộc vào giá trị của innodb_buffer_pool_size. Mỗi phiên bản quản lý các cấu trúc dữ liệu của riêng nó và chiếm một phần bằng nhau trong tổng kích thước nhóm bộ đệm, vì vậy, ví dụ nếu innodb_buffer_pool_size là 4GB và innodb_buffer_pool_instances được đặt thành 4, mỗi phiên bản sẽ là 1GB. Mỗi trường hợp lý tưởng nên có kích thước tối thiểu 1GB.

Ví dụ: bạn có thể đặt innodb_buffer_pool_size thành 6 GB và innodb_buffer_pool_instances thành 4 trong tệp tin cấu hình my.cnf MariaDB của bạn:
; InnoDB buffer pool size in bytes. The primary value to adjust on a database server,
; can be set up to 80% of the total memory in these environments
innodb_buffer_pool_size = 6000M
;  If innodb_buffer_pool_size is set to more than 1GB, innodb_buffer_pool_instances
; divides the InnoDB buffer pool into this many instances.
innodb_buffer_pool_instances = 4

Điều này có ngĩa là mỗi pool sẽ có 1,5GB để lưu trữ dữ liệu trên ram.

Related Articles