|
|
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Приветствую участников форума! Подскажите пожалуйста по поводу одного приема денормализации. Допустим есть таблица с очень большим числом записей. В этой таблице есть поле, которое хранит id некоторого параметра. id этого параметра может быть от 1 до 5. Ни при каких обстоятельствах даже теоретически никогда не появятся других значения этого параметра. Мне необходима максимальная скорость выборки из этой таблицы, причем (очень важно!) при каждом запросе на выборку, я буду указывать только одно(!) возможное значение этого параметра. Скорость записи в таблицу не важна, как не очень критично и дисковое пространство. Возникла идея разделить эту таблицу на 5 таблиц, каждая из которых будет соответствовать определенному значению этого параметра. Подскажите пожалуйста, даст ли этот ход выигрыш в скорости выборки из таблицы? На чисто интуитивном уровне нам придется просматривать меньше строк: строки относящиеся к другому значению параметра будут находиться в другой таблице. Большое спасибо за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:36 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Зависит от того, будут ли в запросе другие условия фильтрации и какие именно это будут условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:40 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
miksoft, в запросе практически всегда будет фильтрация по остальным полям, короме того может быть несколько присоединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:42 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Kolyunyamiksoft, в запросе практически всегда будет фильтрация по остальным полям, короме того может быть несколько присоединений.Тогда зависит от селективности это фильтрации. Если она будет выполняться по индексу и будет высокоселективна (т.е. после нее будет мало записей в результате), то толку от вашего разбиения не будет или будет крайне мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:46 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
miksoft, в большинстве случаев в результате будет выбрано где-то максимум 5-10% от всех записей с определенным значением параметра. При таком сценарии вы не советуете разбивать большую таблицу на подтаблицы? Если вас не затруднит, не могли бы вы пояснить, почему выигрыш в производительности не будет заметен? Ведь нам придется просматривать условно в 5 раз меньше записей при выборке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:50 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
KolyunyaЕсли вас не затруднит, не могли бы вы пояснить, почему выигрыш в производительности не будет заметен? Ведь нам придется просматривать условно в 5 раз меньше записей при выборке?При использовании индекса просматривается далеко не вся таблица, а только те записи, которые согласно этому индексу, могут подпадать под нужные условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:52 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Kolyunyaв большинстве случаев в результате будет выбрано где-то максимум 5-10% от всех записей с определенным значением параметра.Величина достаточно большая, по индексу может и не пойти. Надо либо пробовать, либо излагайте все подробности, вплоть до распределения данных и точных запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:54 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо за советы, никаких точных данных и запросов нет пока к сожалению нет. Известно только, что единственное важное для нас это будет скорость выборки. Все остальное - вторично. Советуете реализовать вариант с 1 таблицей, протестировать в реальных условиях и если что уже думать, как дальше оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 01:57 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
KolyunyaСоветуете реализовать вариант с 1 таблицей, протестировать в реальных условиях и если что уже думать, как дальше оптимизировать?Да. Если будет недостаточно быстро - обращайтесь в подфорум по используемой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 02:00 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
И это называется не денормализацией, а секционированием (partitioning) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 04:28 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Kolyunya, Подскажите пожалуйста, даст ли этот ход выигрыш в скорости выборки из таблицы? На чисто интуитивном уровне нам придется просматривать меньше строк: строки относящиеся к другому значению параметра будут находиться в другой таблице. Нет, не даст. Размер одной таблицы упадет примерно в 5 раз. Это на пол порядка. Мало. Если доступ был не по индексу, стоимость выборки упадет в 5 раз, но, видимо, все равно останется неприемлимо высокой, потому что таблицы размером N и N/5 обе будут очень большими. Если доступ был по индексу, то стоимость упадет на логарифм 5, потому что стоимость поиска по индексу логарифмическая. Это будет порядка 0.5 раз. Типа было 7, станет 6.4. т.е. стоимость упадет очень несущественно. Поэтому в итоге нет смысла разбивать таблицу на части. Невыгодно. Выгоднее добавлять это поле (ключ разбиения) в индексы и использовать его при фильтрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 05:30 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, miksoft, спасибо за ответы! Задал тот же вопрос на SE, там мне ответили, ровно противоположное, правда я не понял аргументацию ответа там. Может вы поймете, что именно usr приводит в качестве доводов? Он ошибается? Еще раз большое спасибо за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 10:53 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Kolyunya, Я что-то не увидел там обратного ответа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 12:17 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, не очень понятно, что автор хотел там сказать: сначала говорит "Yes, you could use partitioning here. Partition elimination will kick in.", а потом " don't see the necessity for creating 5 tables, or using partitioning here. I can see how that might improve performance by a few percent". Если я правильно понял, он тоже говорит, что выигрыш будет очень маленьким, если будет вообще. Еще раз спасибо за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 12:36 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
Kolyunya, miksoft Вам уже всё правильно сказал. Выигрыш от партиционирования будет в тех случаях, когда запросы будут пытаться делать full table scan. Будут ли они его делать в Вашем случае - Вы пока не знаете. Поэтому делайте пока простую таблицу, а вопрос её партиционирования отложите на время, когда сможете увидеть и проэкспериментировать. Разбить таблицу на партиции не так сложно, а вот взять партиционированную таблицу и понять, что её надо было партиционировать по совсем другому критерию - будет довольно глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 14:15 |
|
||
|
Увеличит ли определенная денормализация производительность в определнном сценарии?
|
|||
|---|---|---|---|
|
#18+
MasterZiv. Если доступ был по индексу, то стоимость упадет на логарифм 5, потому что стоимость поиска по индексу логарифмическая. Really? Выборка по индексу 100 строк из таблицы в 10 000 000 строк и 100 строк из таблицы в 10 000 строк будет различаться в "логарифм 1000" раз? Вы, товарищ полковник, с прямым углом перепутали - стоимость поиска одиночного значения по индексу и стоимость выборки по диапазону индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2014, 12:11 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1540952]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 291ms |

| 0 / 0 |

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