|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Здравствуйте, у меня есть сайт со списком разных хэшей. Изначально запросы и ответы выполнялись достаточно быстро, но со временем, когда база разрослась до 2,5 млн строк возникла необходимость какой то оптимизации, потому что 1 запрос выполняется уже по 0,5 секунды, кроме того очень сильно возрастает нагрузка на ЦП, если эти запросы слать один за другим. Структура одной из 3-х таблиц такова: Код: sql 1. 2. 3. 4. 5. 6. 7.
Время выполнения 1-го запроса: Код: sql 1. 2. 3. 4. 5.
Подскажите пожалуйста, как возможно оптимизировать базу и запросы, чтобы снизить время и нагрузку на ЦП? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 17:08 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
opiums, Индексировать поля, участвующие в условиях фильтрации, не пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 21:43 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
opiums, Показывайте полноценный DDL таблицы и план запроса. И для хранения хэша MD5 эффективнее использовать поле BINARY(16), желательно NOT NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 23:45 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
А будет ли какой то эффект, если создать индексы? Ведь там же все значения уникальные и повторяются только 1 раз. Более полная информация о таблице: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 07:51 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
opiumsА будет ли какой то эффект, если создать индексы? Ведь там же все значения уникальные и повторяются только 1 раз. Так вы попробуйте.... И нам рассказать не забудьте - есть эффект от индекса или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 13:34 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Щукина Анна, Когда создавал индексы (надеюсь правильно) для таблицы dehasher_md5: Код: sql 1. 2.
То получил сообщение об ошибке: Код: sql 1.
Попытался перевести в InnoDB и получил аналогичное сообщение: Код: sql 1.
Перенёс базу на другой сервер, где MySQL 10.1.26-MariaDB-0+deb9u1, индексы создались, особо изменений не почувствовал и не могу посмотреть время... Код: sql 1. 2. 3.
Результат выполнения: Empty set Сравнил таблицы, оказалось что на более новой версии создаётся индекс text(333), применил данное к основному серверу, получилось, но и там теперь так же не могу посмотреть время выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 14:28 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
opiums Код: sql 1.
Этот запрос смысла не имеет, его лучше вообще выкинуть. Имеет смысл запрос Код: sql 1.
и для него нужен индекс по полю hash. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 14:37 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov и для него нужен индекс по полю hash. зачем, оно же уникальное ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 18:38 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
opiumsТо получил сообщение об ошибке: Код: sql 1.
А всего-то надо было префикс указать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 19:02 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Дегтярев ЕвгенийDimitry Sibiryakov и для него нужен индекс по полю hash. зачем, оно же уникальноеИз определения таблицы это никак не следует. И чем более уникально значение в поле, тем эффективнее будет индекс по нему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 19:05 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Дегтярев ЕвгенийDimitry Sibiryakov и для него нужен индекс по полю hash. зачем, оно же уникальное А база об этом знает? Ну и почему hash уникален? Любой hash по своей идее не уникален в общем случае. Может быть уникален только в частном случае ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2019, 19:14 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
Да там вообще все значения уникальные, нет повторяющихся ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 04:16 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
MelkijДегтярев Евгенийпропущено... зачем, оно же уникальное А база об этом знает? то был сарказм ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 06:18 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
[quot opiums]Здравствуйте, у меня есть сайт со списком разных хэшей. Изначально запросы и ответы выполнялись достаточно быстро, но со временем, когда база разрослась до 2,5 млн строк возникла необходимость какой то оптимизации, потому что 1 запрос выполняется уже по 0,5 секунды, полсекунды -- это НЕ МНОГО. кроме того очень сильно возрастает нагрузка на ЦП, если эти запросы слать один за другим. СУБД не может выполнять запросы не используя CPU. Как правило, чем больше загрузка CPU, тем __ЛУЧШЕ__ работает СУБД. Структура одной из 3-х таблиц такова: У тебя только одна таблица в запросе используется... +----------+----------+------------------------------------------------------+ | Query_ID | Duration | Query | +----------+----------+------------------------------------------------------+ | 1 | 0,540957 | SELECT `Hash` FROM `deHasher_md5` WHERE `Text`='123' | +----------+----------+------------------------------------------------------+ Подскажите пожалуйста, как возможно оптимизировать базу и запросы, чтобы снизить время и нагрузку на ЦП? Создать индекс на поле Text. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 11:27 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
[quot opiums]Щукина Анна, Когда создавал индексы (надеюсь правильно) для таблицы dehasher_md5: Код: sql 1. 2.
То получил сообщение об ошибке: Код: sql 1. 2. 3. 4. 5.
Префикс поля индекса не может иметь длину больше некоторой величины, которая зависит от версии MySQL, например, что-то типа 512 байт. Размер префикса МАЛО влияет на эффективность индекса, если он достаточно большой. Ну задай тупо по максимуму на твоей версии, и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 11:31 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
MasterZivПодскажите пожалуйста, как возможно оптимизировать базу и запросы, чтобы снизить время и нагрузку на ЦП? Создать индекс на поле Text. кстати, вот хотелось бы уточнить один момент - размер индекса надо ЛИ делать индекс на все 32 байта (16 binary) ? кол-во хешей уже после 5 байт останется минимальным скажем, с миллиарда хешей останется 10-20-50 - их уже и без индекса можно прошерстить мгновенно и отдельно вопрос про постгрес (там нельзя указывать размер индекса) отсюда вопрос, если поле text 2000 символов, то это же дичь в индексе получится? есть ли смысл создать отдельную колонку с маленьким текстом и индексировать её? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:20 |
|
Оптимизация простого запроса SELECT в огромной базе.
|
|||
---|---|---|---|
#18+
полудухи отдельно вопрос про постгрес (там нельзя указывать размер индекса) Можете проиндексировать любую immutable функцию. Например, индекс по left(text, 5) и искать по нему же. Ну или начиная с 10 просто hash индекс построить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:44 |
|
|
start [/forum/topic.php?fid=47&fpage=40&tid=1829310]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 431ms |
0 / 0 |