|
|
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Есть таблица, записей 7кк Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Запрос COUNT(*) без партиционирования выполняется 0.7 секунд, с 25 партициями = 10 секунд. Вопрос собстна в том, почему так долго и можно ли что покрутить, чтобы хоть как-то улучшить время? PS^ По сути проблема со всеми запросами которые аггрегируются, не то чтобы они совсем плохо работает, но вот где данных надо посчитать мало, выполняются очень быстро, но если много, то все, может какого буфера не хватает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:08:22 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Гмм, причем на линуксовом сервере версии 5.5.34 эти 10 секунд. На другом виндовом 5.6.14 за 1.2 секунды выполняется. Правда тут записей меньше (5кк здесь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:16:30 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hettможет какого буфера не хватаетМожет, innodb_buffer_pool_size не хватает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:21:03 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
На серверах стоит 12G на линуксе, на виндовом (где гораздо быстрее работает) - 4G ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:30:45 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Сейчас скачаю на виндовый полную табличку в 7кк и сравню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:31:11 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Повторное время такое же большое? В плане запроса что-нибудь интересное есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:31:56 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Да повторное примерно такое же, раз по 5-10 запускл, ничего не меняется. SIMPLEfh_user_fileindex(null)IX_user_file_abuse_status1(null)7476871Using index Он похоже просто берет самый маленький индекс Код: sql 1. 2. Вот с виндового: SIMPLEfh_user_fileindex(null)IX_user_file_abuse_status1(null)5202505Using index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:36:53 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
HettОн похоже просто берет самый маленький индексПравильно, оно так и должно быть. Попробуйте выполнить OPTIMIZE TABLE для это таблицы? innodb_file_per_table, надеюсь, включена была до создания этой таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:40:26 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Эту таблицу я создал только что, специально для теста и перекинул данные, думаю там нечего оптимизировать на данный момент... innodb_file_per_table включен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:48:14 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
В запросе точно только COUNT(*), без ничего больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 13:50:54 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. Да, вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 14:04:01 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Ну COUNT() это как простейший пример, вообще проблем с любым аггрегирующим запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 14:07:04 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Залил на виндовый 7.5кк записей, запрос на каунт стал выполняться 5 секунд. Сейчас буду пробовать на работу с 10 партишенами (было 25) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 11:18:35 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Чудеса С 10 партишенами время выполнения 7 секунд, с 25 - 5 Если данных чуть меньше (4.5кк), то 1 секунда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2014, 14:06:19 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hett, видишь ли, дорогой виртуальный друг, то, как работает запрос немного зависит от того, что это за запрос. Чуть менее чем полностью. Поэтому вопрошать так без полного текста запроса и полного DDL не то что глупо, а попросту бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 06:06:47 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hett Код: sql 1. 2. Да, вот такой запрос бессмысленен и оптимизировать его так же мало смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 06:09:44 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hett Код: sql 1. 2. Да, вот и еще. с чего ты взял что такой запрос должен ускоряется после партицирования? он должен наоборот замедляться, в твоем конкретно случае примерно в 25 раз, чуть менее. твои времена примерно такой картине и соответствуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 06:15:59 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
MasterZivон должен наоборот замедляться, в твоем конкретно случае примерно в 25 разПочему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 11:01:06 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
MasterZivHett Код: sql 1. 2. Да, вот и еще. с чего ты взял что такой запрос должен ускоряется после партицирования? он должен наоборот замедляться, в твоем конкретно случае примерно в 25 раз, чуть менее. твои времена примерно такой картине и соответствуют. Почему он должен замедляться в 25 раз? В таком случае можно сказать что любые аггрегирующие запросы будут замедляться в n-раз. Тогда за одно может и поведуете, почему в случае с 10 партишенами скорость еще хуже чем с 25-ю? Чем, в данном случае поможет DDL? автортакой запрос бессмысленен и оптимизировать его так же мало смысла. Как я выше уже писал, стали заметно хуже выполняться все аггрегирующие запросы, проблема в них. автори еще. с чего ты взял что такой запрос должен ускоряется после партицирования? Вообще, теоретически если предположить, он может ускоряться хотя бы за счет того, что запросы к каждому партишену параллелятся (именно такое слово употреблено в официальной документации). Но ладно, но на это я и не рассчитывал, в общем-то, пусть даже медленее, но не в 25 раз же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 11:05:46 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hett, потому что запрос вида SELECT COUNT(*) FROM user_file обрабатывает все партиции, а не одну. Их у тебя 25. Будет соотв. в 25 раз больше. Плюс накладуха на сборку общего результата из частных по каждой партиции (думаю, не очень большая). Другое дело, что скан всего в одной таблице и 1/25-ой всего в одной партиции -- тоже разные вещи. Но по крайней мере спуск в дереве таблиц точно в 25 раз будет помножен. В любом случае, не понятоно с чего бы такому запросу ускорится от наличия партицый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 01:59:38 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
MasterZivИх у тебя 25. Будет соотв. в 25 раз больше. А ниче, что партиции в 25 раз меньше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 07:39:41 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
HettMasterZivИх у тебя 25. Будет соотв. в 25 раз больше. А ниче, что партиции в 25 раз меньше? ты вообще читаешь что я пишу? еще раз, за счет чего по твоему запрос должен вдруг заработать быстрее после разбиения на партиции? кстати, запрос дай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 02:06:10 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Дык я же говорю, я и не ждал ускорения и прекрасно понимал, что будет работать медленнее, но не в 10 раз же. Но вообще, если уж так подумать, то мог бы и быстрее, если бы он каждую партицию считал в другом потоке параллельно. Это я уже выше все писал, вы у меня уже по второму кругу одни и те же вопросы спрашиваете и кто тут читает кого, а кто кого нет, - вопрос еще спорный :) Щас потестил на версии 5.6 под виндой, хоть 10 партиций, хоть 100, время одно, 5 секунд. На убунте в версии 5.5 почему-то 10 партишенов работали медленее чем 25. Запрос Код: sql 1. 2. 3. На продакшене запрос выполнялся раньше за 0.1 секунды, теперь 1.1 секунды. Да и вообще любые группирующие запросы в общем так себя проявили. Тот же Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 18:16:09 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
Hett, А зачем Вам вообще partitions? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 21:11:29 |
|
||
|
Partitioning again..
|
|||
|---|---|---|---|
|
#18+
miksoftHettОн похоже просто берет самый маленький индексПравильно, оно так и должно быть. Попробуйте выполнить OPTIMIZE TABLE для это таблицы? innodb_file_per_table, надеюсь, включена была до создания этой таблицы? насколько я знаю, надо делать OPTIMIZE PARTITION ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 08:47:48 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38551783&tid=1835225]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 341ms |

| 0 / 0 |
