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

MYSQL против InnoDB

вывод mysqltuner.

-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA 
[--] Data in InnoDB tables: 11G (Tables: 44100)
[--] Data in MyISAM tables: 458G (Tables: 52114)
[!!] Total fragmented tables: 13

Вот my.cnf

[mysqld]
symbolic-links=0
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
log-error = /var/log/mysql/error.log
log-warnings = 2
symbolic-links=0
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer              = 2G
thread_stack            = 192K
thread_cache_size       = 350
myisam-recover         = BACKUP
max_connections        = 1500
query_cache_limit       = 100M
query_cache_size        = 512M
general_log             = 0
long_query_time = 10
bind-address = 0.0.0.0
old_passwords=1
skip-secure-auth
innodb_buffer_pool_size  = 30G
innodb_stats_on_metadata=0
table_open_cache = 4096
skip-external-locking
skip-name-resolve
ft_min_word_len = 2
innodb_buffer_pool_instances = 30
innodb_file_per_table=0
innodb_checksum_algorithm=INNODB
binlog_checksum=NONE

Я также хочу кэшировать как можно больше данных для набора данных MyISAM. В настоящее время посвящают innodb_buffer_pool_size = 30G для innodb, но его размер всего 11 ГБ, что кажется мне пустой тратой ОЗУ.

Как лучше всего кэшировать данные MyISM ..

Моя система страдает от 100% использования ввода-вывода, в то время как у меня достаточно оперативной памяти в системе

Я не могу использовать более 15 ГБ ОЗУ из 62 ГБ на 24-ядерном аппаратном блоке с 5 ТБ хранилища RAID.

96К столов !! Это может привести к разного рода проблемам.

query_cache_size = 512M - Наличие такого большого КК вредит производительности. Не превышайте 50 миллионов.

Если у вас 62 ГБ ОЗУ и вы используете MyISAM и InnoDB, я бы порекомендовал:

innodb_buffer_pool_size = 16G  -- (also noticing that you have only 11G of data)
key_buffer_size = 8G  -- This only for MyISAM indexes

Неиспользуемое пространство ОЗУ используется для буферов ОС. MyISAM позволяет ОС выполнять кэширование. Таким образом, для кэширования данных MyISAM останется около 35 ГБ.

страдает от 100% использования ввода-вывода

Часто это вызвано неэффективными запросами, такими как сканирование таблиц.

Или, может быть, он открывает много столов, поэтому посмотрите, позволит ли он вам установить этот параметр на такой высокий уровень:

table_open_cache = 20000

Также проверьте open_files_limit и ulimit -n.