Mysql - как рассчитать объём?

gimcnuk

Новичок
Здравствуйте.

подскажите как правильно рассчитать занимаемый объем mysql?

Считаю по формуле Max_Memory = query_cache_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + key_buffer_size + innodb_log_buffer_size + max_connections * (max_allowed_packet + sort_buffer_size + net_buffer_length + thread_stack + read_rnd_buffer_size + read_buffer_size + join_buffer_size)

Пользуюсь калькуляторами:
http://www.omh.cc/mycnf/
http://mysqlcalculator.com/

Везде выходит около 2 Гб
Однако, в реальности mysql умудряется занимать и 5 гигабайт.

Почему? То ли считаю неправильно, то ещё что.

my.cnf:
PHP:
max_connections = 300
skip-networking
skip-name-resolve
myisam-recover
character-set-server = utf8
collation-server = utf8_general_ci

sort_buffer_size = 2M
read_buffer_size = 128K
read_rnd_buffer_size = 256K
join_buffer_size = 128K
thread_stack = 256K
key_buffer_size = 512M
query_cache_size= 64M
query_cache_type= 2
tmp_table_size = 32M

binlog_cache_size = 32K

#Give table-modifying operations (INSERT, REPLACE, DELETE, UPDATE) lower priority than selects
#low-priority-updates

#InnoDB stores each newly created table into its own tbl_name.ibd file in the database directory where the table belongs
innodb_file_per_table

# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=256M
innodb_additional_mem_pool_size=16M

# Set the log file size to about 25% of the buffer pool size
innodb_log_file_size=128M
innodb_log_buffer_size=16M
#innodb_flush_log_at_trx_commit=1


#skip-bdb
#skip-innodb

#ignore-builtin-innodb
default-storage-engine=MyISAM

#innodb_force_recovery=1


max_heap_table_size = 67108864

[mysql]
default-character-set=utf8
 

Фанат

oncle terrible
Команда форума
не разбираюсь в сигнатурах фри, но вообще для 64 бит нужно вдвое больше памяти.
 

gimcnuk

Новичок
В смысле? ram - 8 Gb

В общем ситуация такая: периодически, забивается очередь и начинает "естся память", вплоть до ухода в своп.
И насколько я могу судить, "жрёт" именно mysql, в top он висит с size 4-5Gb, хотя по настройкам, как я понимаю, ему положено не больше 3.

С увеличением key_buffer_size и innodb_buffer_pool_size до 1 гигабайта, память съедается ещё быстрей (что логично)
Мне вот непонятно, почему он берёт больше чем должен по расчёту? Или расчёт неправильный %)
 

Фанат

oncle terrible
Команда форума
какая разница, сколько в наличии? я про использование.
на 32-битной системе программа требует в 2 раза меньше памяти.
Возможно, расчет делается для слов в 4 байта, а на практике используется 8
 

gimcnuk

Новичок
Всем спасибо.

Кажись, разобрался. mysql не при чём, это я смотрел не туда, не на ту колонку в top'е
 

Absinthe

жожо
но вообще для 64 бит нужно вдвое больше памяти.
Где-то на треть. Данные же не только из указателей состоят.

Бред. 128Мбайт он и в Африки 128Мб.
Обоснуй.

Однако, в реальности mysql умудряется занимать и 5 гигабайт.
Может память не отдал системе.
 
Сверху