Server มี RAM 32GB nginx + php 8.3
ลองตั้งค่า config ในไฟล์ /etc/mysql/my.cmf
[mysqld] # ตั้งค่าขนาดที่แนะนำ innodb_buffer_pool_size = 16G # แบ่ง Buffer Pool เป็นส่วนย่อยเพื่อลดการแย่งทรัพยากร (แนะนำ 1GB ต่อ 1 Instance) innodb_buffer_pool_instances = 16 # (ถ้ามี) ตั้งค่าขีดจำกัดล่างให้ระบบยืดหยุ่น innodb_buffer_pool_size_auto_min = 8G innodb_buffer_pool_size_auto_shrink = ON
ลองปรับขนาดแบบ Dynamic
sql SET GLOBAL innodb_buffer_pool_size = 20G;
ปล. เคยลองแล้วไม่ได้ผล เขาบอกว่า ระบบจะค่อยๆ ปรับขนาดใน Background โดยแบ่งเป็นส่วนๆ (Chunks) จนครบตามที่คุณสั่ง
ลองตรวจสอบด้วยคำสั่ง
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_%';
SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM (SELECT SUM(data_length+index_length) Total_InnoDB_Bytes FROM information_schema.tables WHERE engine='InnoDB') A;
SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM (SELECT variable_value PagesData FROM information_schema.global_status WHERE variable_name='Innodb_buffer_pool_pages_data') A, (SELECT variable_value PageSize FROM information_schema.global_status WHERE variable_name='Innodb_page_size') B;