Як ви обчислюєте змінну mysql max_connections?


Відповіді:


27

Відправимо це повідомлення як відповідь із відповідною інформацією. Основні формули:

Доступна оперативна пам’ять = Глобальні буфери + (Поточні буфери x max_з'єднання)

max_connections = (Доступна оперативна пам’ять - глобальні буфери) / потокові буфери

Щоб отримати список буферів та їх значення:

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

Поточні буфери : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack


1
KCD надав це посилання як калькулятор максимальної пам'яті: mysqlcalculator.com
Дерек Дауні

Дерек, ти маєш на увазі "Глобальні буфери = SUM всіх змінних глобальних буферів та" Поточні буфери = сума всіх змінних буферів потоків "?
Мат

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, але це все ще зручно.
випадковий


0

Я дивлюсь на число, яке я отримую від простої калькуляції: очікуваний_число_оборот_запитання_пер_секундний * очікуваний_серйозний_запит_процесінг_час * 2.

Для подальшої настройки я завжди використовую систему моніторингу з історичними даними та намагаюся зарезервувати 20% у випадку якогось піку. Це трохи складніше, коли ви використовуєте об'єднання об'єднань (що зазвичай є хорошою ідеєю) - тоді вам потрібно стежити за кількістю використовуваних з'єднань у пулі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.