Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Добрый день.
Столкнулся с проблемой долгого выполнения выборки из таблицы (последние 7 строк), когда в эту же таблицу другой клиент вставляет строку. Везде пишут, что InnoDB поддерживает одновременное чтение и запись, но у меня почему-то задержки.
Подскажите, пожалуйста, куда копать?
Спасибо.
Добавлено:
Увеличил innodb_buffer_pool_size с 10М до 500M, производительность увеличилась в несколько раз.
Что можно еще изменить в настройках MySQL для существенного увеличения производительности?
Спасибо.
Отредактированно Denya-qt (04.06.2013 09:44:20)
Неактивен
Посмотрите эту презентацию: http://sqlinfo.ru/a/i/rubtsov_mysqlbot.ppt
Неактивен
Neval, сделал еще несколько изменений в соответствии с презентацией, но на первый вроде ничего не поменялось.
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
table_open_cache = 512
tmp_table_size = 32M
thread_cache_size = 32
innodb_additional_mem_pool_size = 16M
Неактивен
Если памяти достаточно, увеличьте ещё innodb_buffer_pool_size, а innodb_log_file_size
пропишите 25% от innodb_buffer_pool_size.
Хотя наверное сначала лучше разобраться с самими запросами.
Блокировки в InnoDB есть, но на уровне строки, т.е. читать нельзя только ту строчку, в которую на данный момент проиводится запись, все остальные можно. Но не знаю точно, но логично предположить, что когда Вы выбираете 10 строчек и одна из них заблокирована, то процесс будет ждать её разблокировки чтобы вернуть все 10 строк, а не 9 без заблокированной. Пусть администраторы прокомментируют этот момент, мне самому стало интересно
Неактивен
У меня каждые 3 секунды один клиент читает последние 10 строк в каждой таблице, а другие клиенты каждые 3 секунды вставляют строки в эти таблицы.
Т.е. получается обмен "в реальном времени" через посредника в виде БД.
Блокируется по-любому, т.к. без клиентов на запись все летает.
Неактивен
А параметр sync_binlog=1 у Вас не имеется, случаем?
Неактивен
Neval, нет, такого параметра не прописано.
Неактивен
Denya-qt написал:
У меня каждые 3 секунды один клиент читает последние 10 строк в каждой таблице, а другие клиенты каждые 3 секунды вставляют строки в эти таблицы.
Т.е. получается обмен "в реальном времени" через посредника в виде БД.
Блокируется по-любому, т.к. без клиентов на запись все летает.
Посредник - это всегда плохо. В любом деле. Но при нормальной работе сервера такого "зависания" быть не должно. Имхо...
Неактивен
gcib, там по-другому не сделать. Тем более в БД все равно надо все складывать.
Кстати, а много ли времени тратиться на соединение с MySQL, где можно подсмотреть этот показатель?
Неактивен
Страниц: 1