คุณคำนวณค่า mysql max_connections อย่างไร


38

คุณคำนวณ mysql max_connections อย่างไร

คุณคำนึงถึงอะไรบ้าง?


2
เป็นคำถามที่ดีและฉันต้องการทราบคำตอบเช่นกัน อ่านผ่านบล็อกเก่านี้เกี่ยวกับเรื่องนี้: mysqlhacker.com/kabir/performance/…
Derek Downey

คำตอบ:


27

ไปโพสต์นี้เป็นคำตอบด้วยข้อมูลที่เกี่ยวข้อง สูตรพื้นฐานคือ:

RAM ที่มีอยู่ = Global Buffers + (Thread Buffers x max_connections)

max_connections = (RAM ที่มีอยู่ - บัฟเฟอร์สากล) / บัฟเฟอร์ด้าย

ในการรับรายการบัฟเฟอร์และค่าของบัฟเฟอร์ให้ทำดังนี้

SHOW VARIABLES LIKE '%buffer%';

นี่คือรายการของบัฟเฟอร์และไม่ว่าพวกเขาจะเป็นส่วนกลางหรือหัวข้อ:

บัฟเฟอร์ส่วนกลาง : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Thread Buffers : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack


1
KCD ให้ลิงก์นี้เป็นเครื่องคำนวณหน่วยความจำสูงสุด: mysqlcalculator.com
Derek Downey

คุณหมายถึง "Global Buffers = SUM ของตัวแปรโกลบอลบัฟเฟอร์ทั้งหมดและ Thread Buffers = ผลรวมของตัวแปรบัฟเฟอร์เธรดทั้งหมด" หรือไม่?
Mat

11

คำเตือน! นี่คือจาก 2011 โดยใช้ MySQL 5.1.x ใช้ความเสี่ยงของคุณเอง

---- โพสต์ดั้งเดิม ----

นี่คือสูตรทางเลือกอื่นในแบบฟอร์มขั้นตอนการจัดเก็บ:

DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_size + @@max_connections * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @@thread_stack ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;

ฉันสมมติว่าคุณใช้ฐานข้อมูล MySQL> เวอร์ชัน 5.1.x และคุณเป็นผู้ใช้ที่มีสิทธิ์ แต่คุณเล่นกับการเชื่อมต่อสูงสุดโดยการใส่หมายเลขใด ๆ ที่คุณต้องการและดูผลลัพธ์


1
ฉันแค่อ่านสูตรของคุณ สวยเนียน !!! BTW +1 !!!
RolandoMySQLDBA

2
อาจถึงเวลาที่จะทบทวนสูตรนี้อีกครั้งเนื่องจากการเปลี่ยนแปลงทั้งหมดใน 5.5 และ 5.6 แต่ยังมีประโยชน์อยู่
randomx


0

ฉันกำลังดูหมายเลขที่ฉันได้รับจากการคำนวณอย่างง่าย: expect_number_of_requests_per_second * expect_average_request_processing_time * 2

สำหรับการจูนภายหลังฉันมักจะใช้ระบบการตรวจสอบที่มีข้อมูลย้อนหลังและพยายามสำรองไว้ 20% ในกรณีที่มีการใช้งานมาก มันซับซ้อนกว่านี้เล็กน้อยเมื่อคุณใช้การรวมการเชื่อมต่อบางอย่าง (ซึ่งโดยปกติจะเป็นความคิดที่ดี) - จากนั้นคุณต้องตรวจสอบจำนวนการเชื่อมต่อที่ใช้ในพูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.