SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.10.2007 09:03:50

Dimon
Завсегдатай
Зарегистрирован: 06.09.2007
Сообщений: 45

Настройка Мускула при множестве запросов.

Здравствуйте, подскажите что подправить, имеем базу ~1.2Гб, к ней куча запросов от одного пользователя отдельными потоками через Access, запрос выполняется достаточно быстро, но когда их много, то некоторые отклоняются или встают в очередь. Numder of sql queris достигает 7500. Затем ночью они типа обрабатываются. Куда копать может параметры связанные с Treads?

Неактивен

 

#2 02.10.2007 10:08:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Настройка Мускула при множестве запросов.

Какого типа запросы? Запросы одинаковые или все разные? Какой движок базы - MyISAM, InnoDB?

Неактивен

 

#3 02.10.2007 10:25:46

Dimon
Завсегдатай
Зарегистрирован: 06.09.2007
Сообщений: 45

Re: Настройка Мускула при множестве запросов.

innodb, windows server, 2 вида запросов, выполняются достаточно быстро, затык в массовости (скорее всего). Thread concurrency = 1000 не помог, попробуем еще buufPoolSize увеличить, а то диск загружен сильно, что еще может быть???

Неактивен

 

#4 02.10.2007 10:43:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Настройка Мускула при множестве запросов.

thread_concurrency 1000 это слишком большое значение. Если возникает затык, то дополнительные треды не помогут, тем более они едят ресурсы машины. Надо найти узкое место. Либо диск, либо блокировки. Чего все ждут? Что показывает SHOW PROCESSLIST? Какие конкретно запросы, оптимизираваны ли они? Блокируют ли друг друга? Без конкретной информации, практически невозможно дать полезный совет.

Неактивен

 

#5 02.10.2007 11:56:57

Dimon
Завсегдатай
Зарегистрирован: 06.09.2007
Сообщений: 45

Re: Настройка Мускула при множестве запросов.

а где блокировки посмотреть-то, в производительности (администрирование сервера) обращение к диску пиковые, поставили buuf_pool_size 1Гиг (4Г оперативки). что в процесслисте интересного, я там ничего не вижу, типа под юзером ходят запросы. Чем еще на диск повлиять и блокировку где посмотреть?

Неактивен

 

#6 02.10.2007 12:00:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Настройка Мускула при множестве запросов.

Надо смотреть какой у запросов STATE в processlist и какие там наиболее долго висят. Еще можно включить slow-query-log для этой цели. Можно посмотреть насколько активно используется диск (в линуксе - iostat, в винде - не знаю какой прогой).

Неактивен

 

#7 02.10.2007 13:07:48

Dimon
Завсегдатай
Зарегистрирован: 06.09.2007
Сообщений: 45

Re: Настройка Мускула при множестве запросов.

какие еще параметры можно проставить чтобы к диску меньше обращалось? типа ключи хранить там или что еще? т.к. загруженность вроде большая на диск. что касается нитей конкурентов, прочитал: Для приложений, где число пользовательских подключений настроить нельзя, для установки максимального числа конкурирующих нитей в InnoDB можно сконфигурировать параметр innodb_thread_concurrency. Вы должны увеличить это значение, если видите много запросов в очереди на, просматривая статус innodb. Установка этого значения в 1000 отключит механизм проверки конфликтов, таким образом мы можем получить столько одновременных нитей, сколько необходимо для обработки всех задач сервера.

Неактивен

 

#8 02.10.2007 14:03:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Настройка Мускула при множестве запросов.

thread_concurrency может не помочь, если у Вас забит диск. Более того, большое
значение может негативно сказаться на производительности, т.к. планировщик ОС
доступа к диску работает не лучше планировщика самого InnoDB.

Смотрите на свои запросы, на их EXPLAIN, на FullTableScans и блокировки.
InnoDB будет тормозить, если Вы не завершаете транзакции (в разных уровнях
изоляции), т.к. ему нужно держать версии старых строк.

Можете убрать сбрасывание (flush) транзакций InnoDB на диск при каждом
COMMIT, так Вы избежите некоторого количество лишний fseeks.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson