|
|
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
Всем привет. Я в общем-то далеко не спец по mysql/php, но выпала необходимость разработать бэкэнд для проекта с немалой посещаемостью. Если кратко: есть php-скрипт, в числе функций которого добавление новой записи в таблицу (или же обновления существующей, если запись для данного пользователя уже есть). В боевом режиме функция может дёргаться примерно 50 раз в секунду, при этом скорость добавления записей достигает максимум 5 в секунду, т.е. добавление 7500 записей закончится только через неприличные 25 минут. select-запросы из той же таблицы выполняются за приемлемое время. Структура таблицы – 4 поля: одно int(11), одно datetime и два varchar длиной 10 и 32, последний из которых primary index (кривоватый момент, но, судя по всему, он бы скорее влиял на скорость выборки). InnoDB. Пока не могу понять, лежит ли причина в php или mysql-части. Явно что-то не так. Пробовал менять innodb_flush_log_at_trx_commit на 0 и 2, ощутимой разницы не дало. Использование в php постоянных кэшируемых соединений помогло предотвратить перегрузки сервера, имевшие место ранее при подобных нагрузках. Самый частый ответ на подобный вопрос – объединять insert-запросы в один, но, как было упомянуто ранее, все данные приходят от разных пользователей, и мой нубский мозг не может пока представит, возможно ли вообще объединение инсертов в этой ситуации. php-код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Буду рад любой помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 00:13 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, это ветка по mysql, а не php, поэтому , если хочешь получать ответ, общайся на уровне mysql, а не заставляй людей ломать голову ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 05:27 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
вадяgpbetatesting, это ветка по mysql, а не php, поэтому , если хочешь получать ответ, общайся на уровне mysql, а не заставляй людей ломать голову Поконкретнее, нужно больше данных про устройство таблицы? Из запроса видно, что он довольно простой, и причина тормозов, вероятно, в том, что запросы "наслаиваются" друг на друга, заставляя последних ждать завершения первых. Всё-таки создал аналогичную тему в подфоруме по PHP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 10:20 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatestingПоконкретнее, нужно больше данных про устройство таблицы?чистый запрос, DDL таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:20 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
вадячистый запрос Код: sql 1. 2. вадяDDL таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:43 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, А зачем уникальный ключ из того же поля, которое является первичным ключом? Уникальный ключ лучше убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:46 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, Включите логирование запросов в MySQL, проверьте сколько времени выполняются запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:48 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, Код: sql 1. ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:51 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
Каноничный случай использования кэша(redis,memcached). Собираете данные в кэше, и потом за раз сливаете в бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:53 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
macheteroКаноничный случай использования кэша(redis,memcached). Собираете данные в кэше, и потом за раз сливаете в бд.Простого плоского файла хватило бы :) Вопрос в том, как быстро нужно видеть результат вставки. Если в том же скрипте, то буферизация не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 12:58 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
miksoftВключите логирование запросов в MySQL, проверьте сколько времени выполняются запросы. Включал slow_query_log с пределом в 1 секунду, запросы туда не попадают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:07 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatestingmiksoftВключите логирование запросов в MySQL, проверьте сколько времени выполняются запросы. Включал slow_query_log с пределом в 1 секунду, запросы туда не попадают.Если вас не устраивает время в 1 секунду, то уменьшайте порог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:10 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, поле tb_uid что содержит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:11 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
вадяполе tb_uid что содержит? Уникальная строка, не обязательно числовая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:16 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatestingУникальная строка, не обязательно числовая.одна из проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:23 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
вадя, сейчас переформатировал таблицу, теперь она вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. уникальные пары tb_uid и tb_gid. Скорость не изменилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:13 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, Делайте не уникальный ключ, а первичный ключ из этих двух полей. Иначе будет добавлено неявное техническое поле для первичного ключа и замедлится доступ к записям таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:18 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
miksoft, Сделал, ничего не поменялось. Вкупе с тем фактом, что запросы не попадают в slow query log, проблема, скорее всего, на php-стороне, в соответствующем подфоруме уже указали на её возможный корень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:28 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatestingВкупе с тем фактом, что запросы не попадают в slow query logЕсли не получается настроить slow query log, то включите общий лог запросов. Нужно понять реальное время выполнения запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:30 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
miksoft, Так я включал лог медленных запросов, куда попадало всё от 1 секунды длиной – этих запросов там не было, были другие (select из таблицы с миллионами записей), но это уже не относится к теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:38 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
gpbetatesting, А почему от 1 секунды? Запросы явно должны быть быстрее, т.е. надо ставить меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:44 |
|
||
|
Медленный insert при большой нагрузке
|
|||
|---|---|---|---|
|
#18+
miksoft, Посмотрел, сами инсерты занимают порядка 0.0000хх секунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39717957&tid=1829539]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 149ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...