SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.10.2010 15:54:53

AlexsWulf
Участник
Зарегистрирован: 28.01.2010
Сообщений: 22

Таблицы MEMORY и их производительность

Доброго времени суток.

Есть таблица следующей структуры

CREATE TABLE `_Mem_Energy` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MEMORY AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


к данной таблице довольно большое количество запросов
точно сказать не могу
но если посмотреть монитор сервера то видно примерно следующая ситуация
select user_id From _Mem_Energy WHERE id=95 or id=92 or id=2
Time 20 State Waiting for table
select user_id From _Mem_Energy WHERE id=74 or id=58 or id=1
Time 2 State Waiting for table
select user_id From _Mem_Energy WHERE id=20 or id=46 or id=0
Time 5 State Waiting for table
select user_id From _Mem_Energy WHERE id=59 or id=76 or id=2
Time 27 State Waiting for table
select count(*) From _Mem_Energy
Time 22 State Waiting for table

и таких очень много

Подскажите в чем проблема?
Заранее благодарю за ответ.

Неактивен

 

#2 26.10.2010 01:32:28

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

Re: Таблицы MEMORY и их производительность

А есть при этом запросы, которые находятся не в состоянии Waiting for table?

Таблички MEMORY блокируются целиком, поэтому если какой-то запрос туда
пишет, например, то остальные запросы вынуждены ждать. Но если у Вас запросы
ждут по пол минуты — дело плохо.

Придумать разных ситуаций, почему так происходит, можно много. От действи-
тельно большой нагрузки (тогда mysql у Вас должен съедать все процессоры) до
какой-то простой ситуации. Например, какой-то запрос взял явную блокировку
таблицы (LOCK TABLES), и делает что-то другое, а остальным потокам приходится
ждать.

Неактивен

 

Board footer

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