Оптимизация MySQL

123
-Mouse-
На сайте с 26.03.2007
Offline
108
#11
RAS:
статус бы еще посмотреть

(Нулевые значения убрал, чтобы влезло в сообщение)


mysql> show status;
+-----------------------------------+-----------+
| Variable_name | Value |
+-----------------------------------+-----------+
| Aborted_clients | 0 |
| Aborted_connects | 6 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 5273 |
| Bytes_sent | 149994 |
| Com_admin_commands | 0 |
| Com_select | 1 |
| Com_show_databases | 1 |
| Com_show_errors | 0 |
| Com_show_fields | 198 |
| Com_show_status | 2 |
| Com_show_storage_engines | 0 |
| Com_show_tables | 1 |
| Compression | OFF |
| Connections | 13602 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 5 |
| Created_tmp_tables | 4 |
| Delayed_errors | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Flush_commands | 1 |
| Handler_commit | 0 |
| Handler_delete | 0 |
| Handler_discover | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 431 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 0 |
| Handler_write | 560 |
| Innodb_buffer_pool_pages_data | 2746 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 23771 |
| Innodb_buffer_pool_pages_free | 29944 |
| Innodb_buffer_pool_pages_latched | 0 |
| Innodb_buffer_pool_pages_misc | 78 |
| Innodb_buffer_pool_pages_total | 32768 |
| Innodb_buffer_pool_read_ahead_rnd | 9 |
| Innodb_buffer_pool_read_ahead_seq | 9 |
| Innodb_buffer_pool_read_requests | 23570733 |
| Innodb_buffer_pool_reads | 1621 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 58017 |
| Innodb_data_fsyncs | 11265 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_pending_writes | 0 |
| Innodb_data_read | 45731840 |
| Innodb_data_reads | 1861 |
| Innodb_data_writes | 30632 |
| Innodb_data_written | 785067008 |
| Innodb_dblwr_pages_written | 23771 |
| Innodb_dblwr_writes | 2450 |
| Innodb_log_waits | 0 |
| Innodb_log_write_requests | 5762 |
| Innodb_log_writes | 3967 |
| Innodb_os_log_fsyncs | 6365 |
| Innodb_os_log_pending_fsyncs | 0 |
| Innodb_os_log_pending_writes | 0 |
| Innodb_os_log_written | 4911104 |
| Innodb_page_size | 16384 |
| Innodb_pages_created | 88 |
| Innodb_pages_read | 2658 |
| Innodb_pages_written | 23771 |
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
| Innodb_rows_deleted | 466 |
| Innodb_rows_inserted | 9010 |
| Innodb_rows_read | 16720066 |
| Innodb_rows_updated | 785 |
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 463419 |
| Key_blocks_used | 502 |
| Key_read_requests | 192382 |
| Key_reads | 641 |
| Key_write_requests | 36221 |
| Key_writes | 35201 |
| Last_query_cost | 0.000000 |
| Max_used_connections | 5 |
| Not_flushed_delayed_rows | 0 |
| Open_files | 36 |
| Open_streams | 0 |
| Open_tables | 258 |
| Opened_tables | 0 |
| Prepared_stmt_count | 0 |
| Qcache_free_blocks | 15802 |
| Qcache_free_memory | 68842608 |
| Qcache_hits | 2419907 |
| Qcache_inserts | 79824 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 324226 |
| Qcache_queries_in_cache | 23253 |
| Qcache_total_blocks | 62510 |
| Questions | 2989050 |
| Rpl_status | NULL |
| Select_full_join | 0 |
| Select_full_range_join | 0 |
| Select_range | 0 |
| Select_range_check | 0 |
| Select_scan | 4 |
| Slave_open_temp_tables | 0 |
| Slave_retried_transactions | 0 |
| Slave_running | OFF |
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
| Sort_merge_passes | 0 |
| Sort_range | 0 |
| Sort_rows | 0 |
| Sort_scan | 0 |
| Table_locks_immediate | 485945 |
| Table_locks_waited | 0 |
| Tc_log_max_pages_used | 0 |
| Tc_log_page_size | 0 |
| Tc_log_page_waits | 0 |
| Threads_cached | 4 |
| Threads_connected | 1 |
| Threads_created | 5 |
| Threads_running | 1 |
| Uptime | 258569 |
| Uptime_since_flush_status | 258569 |
+-----------------------------------+-----------+
226 rows in set (0.00 sec)

Слава Шевцов:
VDS? Сколько записей в таблице?

Нет, выделенный сервер.

Таблиц: 198 Записей: ~1,246,660

Слава Шевцов:
Есть ли в таблицах с запросом text или blob поля?

Есть ли таблицы содержащие text поля? - Да. ИЛИ?

Слава Шевцов:

P.S. Попробуйте отсортировать в MYSQL-таблице данные так же, как они выводятся на страницу ;)

ммм ... можно подробнее? ...

-Mouse- добавил 21.03.2009 в 23:09

4пальца:
Вы лучше приведите текст скрипта, вызывающий столь мощный загруз. Сдаётся мне, что всё дело в его логике.

Пытаюсь выловить. 🚬

Magento движек далеко не маленький, не получается так быстро.

Слава Шевцов
На сайте с 23.07.2005
Offline
370
#12
-Mouse-:
Таблиц: 198 Записей: ~1,246,660

Есть ли таблицы содержащие text поля? - Да. ИЛИ?

ммм ... можно подробнее? ...

Можно. У Вас более ляма записей. Из них при запросе выбирается 20. Откуда? Из разных мест диска. Это уже 20 перепозиционирований головки. Это если запрос на одну таблицу. Если в запросе две таблицы, то смело умножайте число перепозиционирований вдвое.

Идём дальше. У Вас в запросе на выдачу 20 записей наверняка есть сортировка. То есть для того, чтобы отобрать эти 20 записей, MYSQL должен построить на основе параметров запроса промежуточную таблицу, отсортировать её и выдать 20 записей. При этом, так как в запросе есть text поля, промежуточная таблица сначала скидывается на диск и лишь потом сортируется. А она может быть и 10Мб, и 100Мб.

Что делать:

1. Отсортировать в самой таблице записи так, как они выдаются в запросе. Тогда они будут считываться за одно позиционирование головки (в 20 раз быстрее).

2. Выделить text поля в отдельную таблицу. И слать туда запросы после сортировки таблицы с продуктами и извлечения оттуда 20 записей.

Неизменность точки зрения неизменно порождает иллюзию понимания.
N
На сайте с 06.05.2007
Offline
419
#13

1. show GLOBAL status. у вас значения слишком маленькие, это был show status

2. сначала включите slow_log, понаблюдайте и уже потом ищите, а экстрасенсов поменьше слушайте. может не в mysql дело вообще.

3. если уж и анализировать производительность автоматизированными средствами, то не phpmyadmin, а скриптом mysqltuner.pl

Кнопка вызова админа ()
f0x
На сайте с 20.09.2006
Offline
116
f0x
#14

Вот эти sh http://www.day32.com/MySQL/ для тюнинга очень хороши

-Mouse-
На сайте с 26.03.2007
Offline
108
#15
netwind:
1. show GLOBAL status. у вас значения слишком маленькие, это был show status

(нулевые почистил)


mysql> show GLOBAL status;
+-----------------------------------+------------+
| Variable_name | Value |
+-----------------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 6 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 1022422521 |
| Bytes_sent | 488333637 |
| Com_begin | 26341 |
| Com_call_procedure | 0 |
| Com_change_db | 43 |
| Com_change_master | 0 |
| Com_check | 0 |
| Com_checksum | 0 |
| Com_commit | 26339 |
| Com_delete | 466 |
| Com_insert | 56770 |
| Com_insert_select | 35 |
| Com_replace | 24 |
| Com_replace_select | 5 |
| Com_rollback | 2 |
| Com_savepoint | 0 |
| Com_select | 169812 |
| Com_set_option | 27630 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 18 |
| Com_show_charsets | 61 |
| Com_show_collations | 61 |
| Com_show_column_types | 0 |
| Com_show_create_db | 0 |
| Com_show_create_table | 0 |
| Com_show_databases | 66 |
| Com_show_errors | 0 |
| Com_show_fields | 236233 |
| Com_show_grants | 28 |
| Com_show_innodb_status | 0 |
| Com_show_keys | 5 |
| Com_show_processlist | 2 |
| Com_show_status | 10 |
| Com_show_storage_engines | 1 |
| Com_show_tables | 98 |
| Com_show_triggers | 0 |
| Com_show_variables | 212 |
| Com_update | 14555 |
| Compression | OFF |
| Connections | 13766 |
| Created_tmp_disk_tables | 242490 |
| Created_tmp_files | 5 |
| Created_tmp_tables | 274830 |
| Delayed_errors | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Flush_commands | 1 |
| Handler_commit | 13697 |
| Handler_delete | 0 |
| Handler_discover | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 15549 |
| Handler_read_key | 3158270 |
| Handler_read_next | 15745668 |
| Handler_read_prev | 12868 |
| Handler_read_rnd | 153718 |
| Handler_read_rnd_next | 2859407 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 13415 |
| Handler_write | 2588457 |
| Innodb_buffer_pool_pages_data | 2794 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 24404 |
| Innodb_buffer_pool_pages_free | 29897 |
| Innodb_buffer_pool_pages_latched | 0 |
| Innodb_buffer_pool_pages_misc | 77 |
| Innodb_buffer_pool_pages_total | 32768 |
| Innodb_buffer_pool_read_ahead_rnd | 9 |
| Innodb_buffer_pool_read_ahead_seq | 9 |
| Innodb_buffer_pool_read_requests | 23914127 |
| Innodb_buffer_pool_reads | 1668 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 59165 |
| Innodb_data_fsyncs | 11601 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_pending_writes | 0 |
| Innodb_data_read | 46501888 |
| Innodb_data_reads | 1908 |
| Innodb_data_writes | 31497 |
| Innodb_data_written | 805926912 |
| Innodb_dblwr_pages_written | 24404 |
| Innodb_dblwr_writes | 2531 |
| Innodb_log_waits | 0 |
| Innodb_log_write_requests | 5821 |
| Innodb_log_writes | 4061 |
| Innodb_os_log_fsyncs | 6539 |
| Innodb_os_log_pending_fsyncs | 0 |
| Innodb_os_log_pending_writes | 0 |
| Innodb_os_log_written | 4987904 |
| Innodb_page_size | 16384 |
| Innodb_pages_created | 89 |
| Innodb_pages_read | 2705 |
| Innodb_pages_written | 24404 |
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
| Innodb_rows_deleted | 485 |
| Innodb_rows_inserted | 9105 |
| Innodb_rows_read | 16955745 |
| Innodb_rows_updated | 799 |
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 463415 |
| Key_blocks_used | 505 |
| Key_read_requests | 193939 |
| Key_reads | 645 |
| Key_write_requests | 36484 |
| Key_writes | 35464 |
| Last_query_cost | 0.000000 |
| Max_used_connections | 5 |
| Not_flushed_delayed_rows | 0 |
| Open_files | 36 |
| Open_streams | 0 |
| Open_tables | 258 |
| Opened_tables | 264 |
| Prepared_stmt_count | 0 |
| Qcache_free_blocks | 16451 |
| Qcache_free_memory | 70194424 |
| Qcache_hits | 2437375 |
| Qcache_inserts | 80762 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 327329 |
| Qcache_queries_in_cache | 22778 |
| Qcache_total_blocks | 62207 |
| Questions | 3012476 |
| Rpl_status | NULL |
| Select_full_join | 5 |
| Select_full_range_join | 469 |
| Select_range | 28877 |
| Select_range_check | 0 |
| Select_scan | 253438 |
| Slave_open_temp_tables | 0 |
| Slave_retried_transactions | 0 |
| Slave_running | OFF |
| Slow_launch_threads | 0 |
| Slow_queries | 1 |
| Sort_merge_passes | 0 |
| Sort_range | 4502 |
| Sort_rows | 126927 |
| Sort_scan | 25762 |
| Table_locks_immediate | 491249 |
| Table_locks_waited | 0 |
| Tc_log_max_pages_used | 0 |
| Tc_log_page_size | 0 |
| Tc_log_page_waits | 0 |
| Threads_cached | 4 |
| Threads_connected | 1 |
| Threads_created | 5 |
| Threads_running | 1 |
| Uptime | 261257 |
| Uptime_since_flush_status | 261257 |
+-----------------------------------+------------+
226 rows in set (0.01 sec)
netwind:

2. сначала включите slow_log, понаблюдайте и уже потом ищите, а экстрасенсов поменьше слушайте. может не в mysql дело вообще.
3. если уж и анализировать производительность автоматизированными средствами, то не phpmyadmin, а скриптом mysqltuner.pl

Ок, спасибо, завтра попробую.

Himiko
На сайте с 28.08.2008
Offline
560
#16

Думаю, что стоит включить лог "медленных запросов", а так же посмотреть на нагрузку. (в частности на диск)

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
Andreyka
На сайте с 19.02.2005
Offline
822
#17
-Mouse-:
У нас не VDS.
А есть такие, которые не будут греть ценой как за настройку сервера с нуля? :-)

Порой новый сервер быстрее настроить, чем анализировать настроенный владельцем по совету экстрасенсов

Не стоит плодить сущности без необходимости
-Mouse-
На сайте с 26.03.2007
Offline
108
#18
Himiko:
Думаю, что стоит включить лог "медленных запросов", а так же посмотреть на нагрузку. (в частности на диск)

Он и включен (Вами). Вы ж этот сервер и настраивали (там где тонна доп. требований было под Magento) 🚬

Запросов больше 2 сек за неделю всего 1.

V
На сайте с 25.07.2006
Offline
128
#19

Маловероятно, но попробуйте опцию --skip-name-resolve

Может оно ДНС ждет... Фиг его знает, чего ему еще ждать...

По show processlist во время обращения к странице ничего не видно?

Приватный linux-администратор
S
На сайте с 16.03.2007
Offline
66
#20

У вас создается слишком много временных таблиц на диске, причем эти таблицы более 512Мб, это очень много. Нужно оптимизировать запросы, чтобы временные таблицы не создавались или создавались, но меньшего размера (чтобы умещались в пямяти). И попробуйте отключить query cache.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий