|
|
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, я абсолютный дилетант в БД, прошу помощи экспертов. Есть таблица posts 1,5 млн. строк, общий размер с индексами 27 GiB. Запрос выполняется в среднем 3 секунды. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Можно ли как-то оптимизировать или ускорить? Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Что стоит подкрутить my.cnf? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 23:52:13 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
Забыл написать, таблица MyISAM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 00:01:48 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijj, А структуру таблицы, индексы и пр. - предлагаете угадывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 01:24:06 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijj, И план запроса тоже давайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 01:25:30 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijj Код: plsql 1. А это зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 01:27:47 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
miksoft, эта.. без групповых функций хэвинг безсполезен? а че такое ON DUPLICATE KEY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 08:02:15 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
tchingizбез групповых функций хэвинг безсполезен?вовсе нет, можно вообще не использовать группировку и агрегатные функции и тем не менее пользоваться хэвингом (бывает ли в этом необходимость - другой вопрос) tchingizа че такое ON DUPLICATE KEY?это типа upsert https://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 08:37:24 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
а как вам вариант предложенной на сайте http://phpclub.ru/mysql/doc/fulltext-search.html, 3-пример? fulltext индекс сам сортирует результат по релевантности, зачем такой костыль городить с GROUP BY и ORDER BY. насколько критично в таблице cache держать строку score? p.s присоединяюсь к Злой Бобр, miksoft. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 13:29:55 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Таблца cache используется для вывода похожих статей. Выбирается так: Код: plsql 1. miksoftvasilijj, И план запроса тоже давайте. Подскажите как его получить в моём случае. login_sqlruа как вам вариант предложенной на сайте http://phpclub.ru/mysql/doc/fulltext-search.html, 3-пример? fulltext индекс сам сортирует результат по релевантности, зачем такой костыль городить с GROUP BY и ORDER BY. насколько критично в таблице cache держать строку score? p.s присоединяюсь к Злой Бобр, miksoft. miksoftvasilijj Код: plsql 1. А это зачем? Я ж говорю - дилетант, сильно не ругайте, всё подсмотрено в различных местах, и собрано в стиле эникейщиков. Буду признателен, если подскажете как сделать лучше. На данный момент собрал костыль в связке с sphinx. Уходит в среднем 0,4 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 18:22:30 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijjmiksoftпропущено... А это зачем?Я ж говорю - дилетант, сильно не ругайте, всё подсмотрено в различных местах, и собрано в стиле эникейщиков. Буду признателен, если подскажете как сделать лучше.Если ID - это первичный ключ (что предполагается), то просто уберите эту строку из запроса. vasilijjmiksoftvasilijj, И план запроса тоже давайте. Подскажите как его получить в моём случае.Выполните такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. Если кратко - слово EXPLAIN перед запросом не выполняет его, а строит и выдает план этого запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 18:52:27 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
miksoftЕсли ID - это первичный ключ (что предполагается)Если это так - то как-то теряется смысл запроса. Да и расчёт MATCH AGAINST по 1,5кк записей за 3 секунды чёта мне сомнителен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 19:27:36 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
miksoftВыполните такой запрос: +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ | 1 | SIMPLE | posts | ALL | PRIMARY | NULL | NULL | NULL | 1457034 | Using where; Using filesort | +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ 1 row in set (0.02 sec) AkinamiksoftЕсли ID - это первичный ключ (что предполагается)Если это так - то как-то теряется смысл запроса. Да и расчёт MATCH AGAINST по 1,5кк записей за 3 секунды чёта мне сомнителен. Если я правильно понимаю, то первый запрос выполняется приблизительно 2 минуты. А после него, когда индексы уже сидят в key_buffer выходит в среднем 3 секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 20:10:13 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijj, Пользуйте sphinx, т.к. в мускуле полнотекстовый поиск сделан криво. Ну или делайте EAV для хранения score. Тогда все будет летать, но придется время от времени перестраивать эту таблицу. Однозначного ответа нет. Или тратить время от раз в сутки до раз в месяц (в зависимости от потребности) для создания EAV по score, или пользовать sphinx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 22:19:36 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
vasilijjmiksoftВыполните такой запрос: +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ | 1 | SIMPLE | posts | ALL | PRIMARY | NULL | NULL | NULL | 1457034 | Using where; Using filesort | +----+-------------+----------+------+---------------+------+---------+------+---------+-----------------------------+ 1 row in set (0.02 sec) Akinaпропущено... Если это так - то как-то теряется смысл запроса. Да и расчёт MATCH AGAINST по 1,5кк записей за 3 секунды чёта мне сомнителен. Если я правильно понимаю, то первый запрос выполняется приблизительно 2 минуты. А после него, когда индексы уже сидят в key_buffer выходит в среднем 3 секунды. Я как dba, а не как разработчик могу сказать что индекс твой запрос не использует, думаю просто всю таблицу posts загрузил на ОЗУ.короче сервер быстрый. Про сфинкс только слышал.поэтому сейчас ничего не могу сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 22:25:51 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
Ещё, в таблицу cache данные записываются в reference_id=5, score>=2 limit 7. Зачем в выборке с cache-а снова использовать в where те же фильтры. По скорости мелочь, но все же... Модератор: Тема перенесена из форума "Вопрос-Ответ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 22:56:36 |
|
||
|
Помогите ускорить запрос MySQL
|
|||
|---|---|---|---|
|
#18+
Так как с EAV никогда не сталкивался, решил немнго потестить sphinx, в сравнении с FULLTEXT поиском. При разборе результов выдачи, мне пришло в голову сравнение валика и кисточки при покраске стен. В первом случае быстро и гладко, во втором долго и с шероховатостями. Ещё раз убедился, что каждому инструменту своё предназначение. Решил остановиться на sphinx и облагородить свой прикрученный костыль :) Огромное всем спасибо за помощь и участие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 00:49:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38981058&tid=1833070]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 326ms |

| 0 / 0 |
