Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интенсивная запись и чтение из таблицы / 23 сообщений из 23, страница 1 из 1
17.11.2006, 00:01
    #34135036
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Нужен совет!

Имеется таблица порядка 1.5 млн. записей.
В нее постоянно ведется запись (добавление новых 10% и обновление существующих записей 90%) и чтение.
Соотношение записи и чтения примерно 1/3.
Но поскольку обращений очень много, то тормоза стоят жуткие.
В списке процессов по 200-300 и более записей из них 90% в состоянии lock.

Посоветуйте, как разрулить ситуацию?

PS: Назначение таблицы - анкеты пользователей системы знакомств.
Постоянно регистрируются новые, изменяют параметры старые.
И очень-очень много поисковых запросов.

База MySQL
...
Рейтинг: 0 / 0
17.11.2006, 00:23
    #34135054
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
насколько помню, в MySQL нет хинта NOLOCK (речь конечно же не идет об InnoDB?),...
скорее всего READ UNCOMMITED для поисковых запросов решит проблему.
...
Рейтинг: 0 / 0
17.11.2006, 09:59
    #34135425
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
iscrafmнасколько помню, в MySQL нет хинта NOLOCK (речь конечно же не идет об InnoDB?),...
скорее всего READ UNCOMMITED для поисковых запросов решит проблему.

В мануале про READ UNCOMMITED ничего нет.
Речь точно идет о MySQL ?

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

Интересно есть ли какие-то эффективные трюки?
Сейчас пробовал делать копию базы для поиска.
Но по времени залочить и закрыть таблицу, а потом
скоприровать почти 1Гб - от минуты и более занимет...
а в это время лок - так что тоже неахти...
...
Рейтинг: 0 / 0
17.11.2006, 10:15
    #34135486
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
SergeyFree
В мануале про READ UNCOMMITED ничего нет.

set transaction isolation level read uncommitted
Поищите про уровни изоляции все же внимательней.


SergeyFree
Мне также предложили InnoDB.

Это тоже вариант. InnoDB версионник и не будет блокировать при чтении без танцев с бубнами.
...
Рейтинг: 0 / 0
17.11.2006, 10:16
    #34135490
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Оказывается правильно это пишется так: READ UNCOMMITTED
Потому поиск и не находил (даже по mysql.com).

Надо попробывать.
...
Рейтинг: 0 / 0
17.11.2006, 10:18
    #34135499
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
SergeyFreeОказывается правильно это пишется так: READ UNCOMMITTED

да, пропустил буковку :)
...
Рейтинг: 0 / 0
17.11.2006, 10:24
    #34135523
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
А кстати, многие пропускают. Два M пишут, а вот T только одно.
Я даже подумал что это в Оракле синтаксис такой... :)
Пока не нашел такую же очепятку на mysql.ru :)
...
Рейтинг: 0 / 0
17.11.2006, 13:11
    #34136334
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Такое впечатление, что READ UNCOMMITTED совсем не работает на MyISAM таблицах

делаю сразу после подключения к базе:
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

для всех клиентов. но результат тот же.
...
Рейтинг: 0 / 0
17.11.2006, 13:47
    #34136532
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
без SESSION, перед SELECT...
проверьте, уровень изоляции понизился и не дает эффекта или все же остался прежний
SELECT @@tx_isolation..
...
Рейтинг: 0 / 0
17.11.2006, 14:11
    #34136650
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Ведь SET SESSION TRANSACTION влияет на всю сессию после подключения...
А так перед каждым запросом вставлять.

Сделал. Ничего не поменялось...

mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

Запросов море, селекты в локах...
Ладно бы апдейты в очередь ставились.
Ведь вся идея была чтобы селекты пропускать
(не по high_priority, а по "грязному").
...
Рейтинг: 0 / 0
17.11.2006, 14:13
    #34136666
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Единственное, напомню что у меня MyISAM таблица.
А не InnoDB (пока этот вариант не трогаю)
Вся информация , в частности по @@tx_isolation;
в мануалах чаще соотносится с innodb
...
Рейтинг: 0 / 0
17.11.2006, 14:15
    #34136678
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
iscrafm SergeyFree
В мануале про READ UNCOMMITED ничего нет.

set transaction isolation level read uncommitted
Поищите про уровни изоляции все же внимательней.


SergeyFree
Мне также предложили InnoDB.

Это тоже вариант. InnoDB версионник и не будет блокировать при чтении без танцев с бубнами.Если человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций?
...
Рейтинг: 0 / 0
17.11.2006, 14:18
    #34136702
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Прошу прощения статус меняется
+------------------+
| @@tx_isolation |
+------------------+
| READ-UNCOMMITTED |
+------------------+

Но на последующий запрос это не влияет.
mysql> select * from accounts limit 10;
...
Query OK, 10 rows affected (46.05 sec)

Она так же в локах провисел...
...
Рейтинг: 0 / 0
17.11.2006, 14:45
    #34136847
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
DocAlЕсли человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций?
грязное чтение, не более. А Вы что подумали?
...
Рейтинг: 0 / 0
17.11.2006, 15:08
    #34136965
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
DocAlЕсли человек не хочет использовать InnoDB, что ему с уровней изоляции транзакций?
точно, если MyISAM... какие транзакции. переклинило. :)
...
Рейтинг: 0 / 0
17.11.2006, 15:46
    #34137138
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
Вредный совет: можно использовать HIGH_PRIORITY у выборок.
Полезный совет: переходить на InnoDB и не страдать фигнёй.
...
Рейтинг: 0 / 0
17.11.2006, 18:58
    #34137780
ev65
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать?
...
Рейтинг: 0 / 0
17.11.2006, 19:06
    #34137795
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
> Полезный совет: переходить на InnoDB и не страдать фигнёй.

Еще один полезный совет: переходить на PostgreSQL и не страдать фигней.
...
Рейтинг: 0 / 0
17.11.2006, 19:19
    #34137806
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
ev65а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать?
При большом количестве апдейтов, на блокировочнике всё равно будут тормоза.
...
Рейтинг: 0 / 0
17.11.2006, 20:04
    #34137866
SergeyFree
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
guest_20040621> Полезный совет: переходить на InnoDB и не страдать фигнёй.

Еще один полезный совет: переходить на PostgreSQL и не страдать фигней.

Да, на InnoDB уже решился :)
Только сначала организую установку 5-ой версии,
чтобы реализация посвежее была.

А вот про Postgre даже и не думал.
В принципе, не проблема. Другое дело что тема новая.
Нужно будет заняться изчением/сравнением.

А то что мы с READ UNCOMMITED бились, меня тоже засмущало.
Но "на авось" не сработало :)

Так что всем спасибо!
Буду изучать новую тему.
...
Рейтинг: 0 / 0
17.11.2006, 20:16
    #34137893
ev65
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
DocAl ev65а если для начала попробовать соптимизировать запрос широкоиспользуемым методом - понять какой ему нужен индекс и заставить его использовать?
При большом количестве апдейтов, на блокировочнике всё равно будут тормоза.


Почему? Одновременно обновляются одни и те же записи?
...
Рейтинг: 0 / 0
17.11.2006, 20:21
    #34137903
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
ev65
Почему? Одновременно обновляются одни и те же записи?
В MyISAM блокировки только на уровне таблиц, соответственно, если поток обновлений достаточно большой, таблица большую часть времени заблокирована, выборки делать некогда. Если для вставок там реализованы механизмы, позволяющие получить консистентное чтение без блокировок, то большой поток обновлений и удалений из таблицы существенно влияет на среднее время выборки из таблиц.
...
Рейтинг: 0 / 0
17.11.2006, 20:41
    #34137925
ev65
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интенсивная запись и чтение из таблицы
to DocAl

пардон, не обратила внимания какая субд обсуждается
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интенсивная запись и чтение из таблицы / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]