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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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


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