Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
проблема с InnoDB (alex) 14/10/2009 - 02:23:53



From: alex - 14/10/2009 - 02:23:53
Subject:проблема с InnoDB
-----------------
Вопросик по InnoDB

Использую mysql 5.1.26
ОС : FreeBSD server.domain.com 6.3
ОЗУ : 3 Гига
Захотел я потестить InnoDB и столкнулся с проблемой.

Создал я таблицу на 100000 записей, структура такова :

mysql> describe accounts;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| username | varchar(32) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.16 sec)


Запускаю приложение, которое подключается к серверу бд, выгребает первую запись и удаляет ее и ждет 5-10 секунд и продолжает.
Обращения есс-но идут к таблице вышеприведенной.

Перечень запросов таков :

START TRANSACTION
SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE
проверяю то что вернулось , если все ок, то
DELETE FROM accounts WHERE id=" + result[0]
COMMIT

Если запускать в 10 потоках, то все работает на ура. Пробовал я запускать при 300 потоках - работало минут 10 нормально (обработало 30к записей), а потом
таблица залочилась :(

В show processlist вот такое :

| 46046 | root | localhost | dev | Query | 768 | Sending data | SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE |
| 46047 | root | localhost | dev | Query | 767 | Sending data | SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE |
| 46048 | root | localhost | dev | Query | 767 | Sending data | SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE |
| 46049 | root | localhost | dev | Query | 767 | Sending data | SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE |
| 46050 | root | localhost | dev | Query | 767 | Sending data | SELECT id, username, password FROM accounts LIMIT 1 FOR UPDATE |
| 46059 | root | localhost | dev | Query | 0 | NULL | show processlist |
+-------+------+-----------+------+---------+------+--------------+----------------------------------------------------------------+
367 rows in set (0.00 sec)

В логах мускула никах эксепшинов нету.

Может что то с настройками Innodb нето ?
Вот как у меня :

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50


Как это побороть что бы таблица не лочилась ?

Можете предложить какие значения должны быть, что бы работало хотя бы при 300-500 потоков и не лочилось ?

Заранее благодарен.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36328



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |