Назад | Перейти на главную страницу

Уменьшение использования памяти MySQL

Вывод:


У меня новый MySQL установка на небольшая машина Windows Server 2008 (меньше, чем 1 ГБ оперативной памяти).

В mysqld процесс потребляет между 300 МБ и 400 МБ памяти, вызывающей подкачку системы!

Я читал, что это может помочь:

Для информации вот my.ini Файл конфигурации:

[client]
no-beep
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir="C:\Program Files\MySQL\MySQL Server 5.6\"
datadir="C:\ProgramData\MySQL\MySQL Server 5.6\data\"
character-set-server=utf8
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-output=FILE
general-log=0
general_log_file="my-pc.log"
slow-query-log=1
slow_query_log_file="my-pc.log"
long_query_time=10
log-error="my-pc.err"
max_connections=100
query_cache_size=1M
table_open_cache=2000
tmp_table_size=3M
thread_cache_size=9
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=5M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
sort_buffer_size=0
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=8
innodb_autoextend_increment=64M
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=70
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4110
query_cache_type=1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

Этот сервер MySQL может быть очень маленьким: макс 20 подключений при этом не более 2 ГБ данных хранить, нет необходимости в высокой производительности...

Есть ли способ уменьшить объем памяти, занимаемый этим экземпляром MySQL, или это уже минимум?

Заранее благодарю за любую помощь.

Следующий файл my.ini для mysql 5.6 заставляет «частные байты» уменьшаться с 630 МБ до 20 МБ, а «рабочий набор» - с 450 МБ до 21 МБ на 64-разрядной машине с Windows 7. Производительность сервера mysql, настроенного таким образом, вероятно, будет очень плохой, но технически, если вы хотите, чтобы он занимал как можно меньше памяти, то это ответ.

# MySQL Server Instance Configuration File
[client]
no-beep
socket=0.0
port=3306
[mysql]
default-character-set=utf8
# server_type=3
[mysqld]
# skip-networking
enable-named-pipe
# shared-memory
# shared-memory-base-name=MYSQL
socket=MYSQL
port=3306
# basedir="C:/Program Files/MySQL/MySQL Server 5.6/"
datadir=C:/ProgramData/MySQL/MySQL Server 5.6/Data
character-set-server=utf8
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# plugin-load=authentication_windows.dll
log-output=FILE
general-log=0
general_log_file="PEGASUS.log"
slow-query-log=1
slow_query_log_file="PEGASUS-slow.log"
long_query_time=10
# log-bin
log-error="PEGASUS.err"
server-id=1
max_connections=20 
query_cache_size=0
table_open_cache=100
tmp_table_size=44M
thread_cache_size=0
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=1M
key_buffer_size=8
read_buffer_size=8K
read_rnd_buffer_size=8K
sort_buffer_size=32K
# innodb_data_home_dir=0.0
# skip-innodb
innodb_additional_mem_pool_size=1M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=256K
innodb_buffer_pool_size=1M
innodb_log_file_size=48M
innodb_thread_concurrency=9
innodb_autoextend_increment=64
innodb_buffer_pool_instances=2
innodb_concurrency_tickets=10
innodb_old_blocks_time=1000
innodb_open_files=10
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=5
flush_time=10
join_buffer_size=16K
max_allowed_packet=1M
max_connect_errors=100
open_files_limit=100
query_cache_type=2
table_definition_cache=400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
host_cache_size=0
thread_stack=128K
max_heap_table_size=16K
bulk_insert_buffer_size=0
net_buffer_length=1K
innodb_sort_buffer_size=64K
binlog_cache_size=4K
binlog_stmt_cache_size=4K
performance_schema=0

Взято отсюда: michael.gr - Минимальный объем памяти MySQL