|
|
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
Прошу помочь начинающему коллеге :) Может где в my.ini ошибка? Уже очень много форумов перелопатил, ничего не могу найти...( Вот такое получаю я в slow.log каждые 10-15 мин: # Query_time: 61 Lock_time: 0 Rows_sent: 0 Rows_examined: 10228246 SELECT * FROM 111_data WHERE `sn` = 18920 AND `datetime` BETWEEN ("2015-08-20 07:57") AND ("2015-08-20 08:57") ORDER BY `id` DESC; phpmyadmin тоже целую минуту выбирает `sn` из этой таблицы в 10 000 000 строк... при этом загруз процессора сервера на 7-8%, а оперативки 6 ГБ из 16... Проверку и оптимизацию делал - везде "ОК".. настройки в my.ini: default-storage-engine=INNODB max_connections=2000 query_cache_size=128M table_cache=700 tmp_table_size=128M thread_cache_size=64 key_buffer_size=1024M read_buffer_size=1M read_rnd_buffer_size=1M sort_buffer_size=4M innodb_additional_mem_pool_size=128M innodb_flush_log_at_trx_commit=2 innodb_log_buffer_size=16M innodb_log_file_size=128M innodb_thread_concurrency=50 innodb_buffer_pool_size=1024M (при попытке увеличения последнего до 2048М мускул вообще отказался работать, в mysql.err: InnoDB: memory with malloc! Total allocated memory InnoDB: by InnoDB 140891972 bytes. Operating system errno: 8 InnoDB: Check if you should increase the swap file or InnoDB: ulimits of your operating system. InnoDB: On FreeBSD check you have compiled the OS with InnoDB: a big enough maximum process size. InnoDB: Note that in most 32-bit computers the process InnoDB: memory space is limited to 2 GB or 4 GB. InnoDB: We keep retrying the allocation for 60 seconds... InnoDB: Fatal error: cannot allocate the memory for the buffer pool 150820 8:41:13 [ERROR] Default storage engine (InnoDB) is not available 150820 8:41:13 [ERROR] Aborting ) Также после каждого "InnoDB: Started" пишет такое: C:\AppServ\MySQL\bin\mysqld-nt: Out of memory (Needed 940254208 bytes) C:\AppServ\MySQL\bin\mysqld-nt: Out of memory (Needed 705189888 bytes) C:\AppServ\MySQL\bin\mysqld-nt: Out of memory (Needed 528890880 bytes) 150820 13:41:20 [Note] C:\AppServ\MySQL\bin\mysqld-nt: ready for connections. Version: '5.0.51b-community-nt-log' socket: '' port: 3306 MySQL Community Edition (GPL) п.с. а phpMyAdmin выделяет красным: Innodb_buffer_pool_pages_dirty 52 Innodb_buffer_pool_reads 3,067 Innodb_row_lock_time_max 78 Innodb_row_lock_waits 1,332 Handler_read_rnd 557 k Handler_read_rnd_next 3,274.62 M Key_reads 410 Key_writes 631 Opened_tables 382 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:36:31 |
|
||
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
авторПрошу помочь начинающему коллеге :) Может где в my.ini ошибка? Уже очень много форумов перелопатил, ничего не могу найти...( А что же вы ищите ? В mysql нет никакой настройки "работать_быстро = 1". То есть, ошибки быть в принципе не может. То, что при увеличении отдельных параметров возникает ошибка - это совсем другой вопрос. Но прежде вам надо понять что ищите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:17:35 |
|
||
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
Я ищу проблему, почему запрос (например найти 'sn' в phpmyadmin), который должен выполнятся за несколько секунд, выполняется минуту, и то не всегда... Таблица большая? А как же тогда работают системы где 1 000 000 000 строк, а не 10?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:34:58 |
|
||
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
hitmanhunt, а почему это вы решили что запрос должен выполняться несколько секунд? Раньше везло, а сейчас не везет. У вас sql - декларативный язык. Вы описали какие данные вам нужны - сервер их как-нибудь выполняет одним из сотен возможных способов. Там же не было времени, способа, подсказок и тд. Таким образом, приходим к необходимости узнать каким же именно способом работает ваш запрос . оператор EXPLAIN показывает вам план выполнения запроса. То есть, вам нужно посмотреть план и понять как запрос ускорить. Ускорить можно, например, "подсказками" - создать индекс или же изменить запрос чтобы использовались уже созданные индексы. А с настройками mysql план напрямую не связан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:49:45 |
|
||
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
теперь понятно, спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 16:51:33 |
|
||
|
Сильно большой Query_time: не могу побороть, очень прошу помочь
|
|||
|---|---|---|---|
|
#18+
hitmanhuntinnodb_buffer_pool_size=1024M (при попытке увеличения последнего до 2048М мускул вообще отказался работать, в mysql.err: InnoDB: memory with malloc! Total allocated memory InnoDB: by InnoDB 140891972 bytes. Operating system errno: 8 InnoDB: Check if you should increase the swap file or InnoDB: ulimits of your operating system. InnoDB: On FreeBSD check you have compiled the OS with InnoDB: a big enough maximum process size. InnoDB: Note that in most 32-bit computers the process InnoDB: memory space is limited to 2 GB or 4 GB. InnoDB: We keep retrying the allocation for 60 seconds... InnoDB: Fatal error: cannot allocate the memory for the buffer pool 150820 8:41:13 [ERROR] Default storage engine (InnoDB) is not available 150820 8:41:13 [ERROR] Aborting )Судя по этому, у вас 32-разрядная версия MySQL. А чтобы утилизировать больше памяти нужно переходить на 64-разрядную версию. ОС, разумеется, тоже должна быть 64-разрядная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 17:04:02 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=127&tid=1832798]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 344ms |

| 0 / 0 |
