|
|
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Нужен совет! Имеется таблица порядка 1.5 млн. записей. В нее постоянно ведется запись (добавление новых 10% и обновление существующих записей 90%) и чтение. Соотношение записи и чтения примерно 1/3. Но поскольку обращений очень много, то тормоза стоят жуткие. В списке процессов по 200-300 и более записей из них 90% в состоянии lock. Посоветуйте, как разрулить ситуацию? PS: Назначение таблицы - анкеты пользователей системы знакомств. Постоянно регистрируются новые, изменяют параметры старые. И очень-очень много поисковых запросов. База MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 00:01 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
насколько помню, в MySQL нет хинта NOLOCK (речь конечно же не идет об InnoDB?),... скорее всего READ UNCOMMITED для поисковых запросов решит проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 00:23 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
iscrafmнасколько помню, в MySQL нет хинта NOLOCK (речь конечно же не идет об InnoDB?),... скорее всего READ UNCOMMITED для поисковых запросов решит проблему. В мануале про READ UNCOMMITED ничего нет. Речь точно идет о MySQL ? Мне также предложили InnoDB. Вот только кроме построчной блокировки никакие другие возможности не нужны. А нагрузка из-за перехода возрастет (и на память, на процессор, на диск) - вроде как лишнее. Интересно есть ли какие-то эффективные трюки? Сейчас пробовал делать копию базы для поиска. Но по времени залочить и закрыть таблицу, а потом скоприровать почти 1Гб - от минуты и более занимет... а в это время лок - так что тоже неахти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 09:59 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
SergeyFree В мануале про READ UNCOMMITED ничего нет. set transaction isolation level read uncommitted Поищите про уровни изоляции все же внимательней. SergeyFree Мне также предложили InnoDB. Это тоже вариант. InnoDB версионник и не будет блокировать при чтении без танцев с бубнами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:15 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Оказывается правильно это пишется так: READ UNCOMMITTED Потому поиск и не находил (даже по mysql.com). Надо попробывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:16 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
SergeyFreeОказывается правильно это пишется так: READ UNCOMMITTED да, пропустил буковку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:18 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
А кстати, многие пропускают. Два M пишут, а вот T только одно. Я даже подумал что это в Оракле синтаксис такой... :) Пока не нашел такую же очепятку на mysql.ru :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:24 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Такое впечатление, что READ UNCOMMITTED совсем не работает на MyISAM таблицах делаю сразу после подключения к базе: SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED для всех клиентов. но результат тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 13:11 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
без SESSION, перед SELECT... проверьте, уровень изоляции понизился и не дает эффекта или все же остался прежний SELECT @@tx_isolation.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 13:47 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Ведь SET SESSION TRANSACTION влияет на всю сессию после подключения... А так перед каждым запросом вставлять. Сделал. Ничего не поменялось... mysql> SELECT @@tx_isolation; +-----------------+ | @@tx_isolation | +-----------------+ | REPEATABLE-READ | +-----------------+ 1 row in set (0.00 sec) Запросов море, селекты в локах... Ладно бы апдейты в очередь ставились. Ведь вся идея была чтобы селекты пропускать (не по high_priority, а по "грязному"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:11 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Единственное, напомню что у меня MyISAM таблица. А не InnoDB (пока этот вариант не трогаю) Вся информация , в частности по @@tx_isolation; в мануалах чаще соотносится с innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:13 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
iscrafm SergeyFree В мануале про READ UNCOMMITED ничего нет. set transaction isolation level read uncommitted Поищите про уровни изоляции все же внимательней. SergeyFree Мне также предложили InnoDB. Это тоже вариант. InnoDB версионник и не будет блокировать при чтении без танцев с бубнами.Если человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:15 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Прошу прощения статус меняется +------------------+ | @@tx_isolation | +------------------+ | READ-UNCOMMITTED | +------------------+ Но на последующий запрос это не влияет. mysql> select * from accounts limit 10; ... Query OK, 10 rows affected (46.05 sec) Она так же в локах провисел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:18 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
DocAlЕсли человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций? грязное чтение, не более. А Вы что подумали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:45 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
DocAlЕсли человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций? точно, если MyISAM... какие транзакции. переклинило. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:08 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
Вредный совет: можно использовать HIGH_PRIORITY у выборок. Полезный совет: переходить на InnoDB и не страдать фигнёй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:46 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 18:58 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
> Полезный совет: переходить на InnoDB и не страдать фигнёй. Еще один полезный совет: переходить на PostgreSQL и не страдать фигней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 19:06 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
ev65а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать? При большом количестве апдейтов, на блокировочнике всё равно будут тормоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 19:19 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Полезный совет: переходить на InnoDB и не страдать фигнёй. Еще один полезный совет: переходить на PostgreSQL и не страдать фигней. Да, на InnoDB уже решился :) Только сначала организую установку 5-ой версии, чтобы реализация посвежее была. А вот про Postgre даже и не думал. В принципе, не проблема. Другое дело что тема новая. Нужно будет заняться изчением/сравнением. А то что мы с READ UNCOMMITED бились, меня тоже засмущало. Но "на авось" не сработало :) Так что всем спасибо! Буду изучать новую тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 20:04 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
DocAl ev65а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать? При большом количестве апдейтов, на блокировочнике всё равно будут тормоза. Почему? Одновременно обновляются одни и те же записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 20:16 |
|
||
|
Интенсивная запись и чтение из таблицы
|
|||
|---|---|---|---|
|
#18+
ev65 Почему? Одновременно обновляются одни и те же записи? В MyISAM блокировки только на уровне таблиц, соответственно, если поток обновлений достаточно большой, таблица большую часть времени заблокирована, выборки делать некогда. Если для вставок там реализованы механизмы, позволяющие получить консистентное чтение без блокировок, то большой поток обновлений и удалений из таблицы существенно влияет на среднее время выборки из таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 20:21 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34137893&tid=1544888]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 530ms |

| 0 / 0 |
