Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Увеличит ли определенная денормализация производительность в определнном сценарии? / 16 сообщений из 16, страница 1 из 1
15.03.2014, 01:36
    #38587002
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Приветствую участников форума!
Подскажите пожалуйста по поводу одного приема денормализации. Допустим есть таблица с очень большим числом записей. В этой таблице есть поле, которое хранит id некоторого параметра. id этого параметра может быть от 1 до 5. Ни при каких обстоятельствах даже теоретически никогда не появятся других значения этого параметра.

Мне необходима максимальная скорость выборки из этой таблицы, причем (очень важно!) при каждом запросе на выборку, я буду указывать только одно(!) возможное значение этого параметра. Скорость записи в таблицу не важна, как не очень критично и дисковое пространство.

Возникла идея разделить эту таблицу на 5 таблиц, каждая из которых будет соответствовать определенному значению этого параметра.

Подскажите пожалуйста, даст ли этот ход выигрыш в скорости выборки из таблицы? На чисто интуитивном уровне нам придется просматривать меньше строк: строки относящиеся к другому значению параметра будут находиться в другой таблице.

Большое спасибо за советы!
...
Рейтинг: 0 / 0
15.03.2014, 01:40
    #38587005
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Зависит от того, будут ли в запросе другие условия фильтрации и какие именно это будут условия.
...
Рейтинг: 0 / 0
15.03.2014, 01:42
    #38587006
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
miksoft, в запросе практически всегда будет фильтрация по остальным полям, короме того может быть несколько присоединений.
...
Рейтинг: 0 / 0
15.03.2014, 01:46
    #38587007
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Kolyunyamiksoft, в запросе практически всегда будет фильтрация по остальным полям, короме того может быть несколько присоединений.Тогда зависит от селективности это фильтрации. Если она будет выполняться по индексу и будет высокоселективна (т.е. после нее будет мало записей в результате), то толку от вашего разбиения не будет или будет крайне мало.
...
Рейтинг: 0 / 0
15.03.2014, 01:50
    #38587008
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
miksoft, в большинстве случаев в результате будет выбрано где-то максимум 5-10% от всех записей с определенным значением параметра. При таком сценарии вы не советуете разбивать большую таблицу на подтаблицы?

Если вас не затруднит, не могли бы вы пояснить, почему выигрыш в производительности не будет заметен? Ведь нам придется просматривать условно в 5 раз меньше записей при выборке?
...
Рейтинг: 0 / 0
15.03.2014, 01:52
    #38587010
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
KolyunyaЕсли вас не затруднит, не могли бы вы пояснить, почему выигрыш в производительности не будет заметен? Ведь нам придется просматривать условно в 5 раз меньше записей при выборке?При использовании индекса просматривается далеко не вся таблица, а только те записи, которые согласно этому индексу, могут подпадать под нужные условия.
...
Рейтинг: 0 / 0
15.03.2014, 01:54
    #38587011
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Kolyunyaв большинстве случаев в результате будет выбрано где-то максимум 5-10% от всех записей с определенным значением параметра.Величина достаточно большая, по индексу может и не пойти.
Надо либо пробовать, либо излагайте все подробности, вплоть до распределения данных и точных запросов.
...
Рейтинг: 0 / 0
15.03.2014, 01:57
    #38587012
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
miksoft, спасибо за советы, никаких точных данных и запросов нет пока к сожалению нет. Известно только, что единственное важное для нас это будет скорость выборки. Все остальное - вторично. Советуете реализовать вариант с 1 таблицей, протестировать в реальных условиях и если что уже думать, как дальше оптимизировать?
...
Рейтинг: 0 / 0
15.03.2014, 02:00
    #38587013
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
KolyunyaСоветуете реализовать вариант с 1 таблицей, протестировать в реальных условиях и если что уже думать, как дальше оптимизировать?Да. Если будет недостаточно быстро - обращайтесь в подфорум по используемой СУБД.
...
Рейтинг: 0 / 0
15.03.2014, 04:28
    #38587036
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
И это называется не денормализацией, а секционированием (partitioning)
...
Рейтинг: 0 / 0
15.03.2014, 05:30
    #38587055
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Kolyunya,

Подскажите пожалуйста, даст ли этот ход выигрыш в скорости выборки из таблицы? На чисто интуитивном уровне нам придется просматривать меньше строк: строки относящиеся к другому значению параметра будут находиться в другой таблице.


Нет, не даст. Размер одной таблицы упадет примерно в 5 раз. Это на пол порядка. Мало.

Если доступ был не по индексу, стоимость выборки упадет в 5 раз, но, видимо, все равно останется неприемлимо высокой, потому что таблицы размером N и N/5 обе будут очень большими.

Если доступ был по индексу, то стоимость упадет на логарифм 5, потому что стоимость поиска по индексу логарифмическая. Это будет порядка 0.5 раз. Типа было 7, станет 6.4. т.е. стоимость упадет очень несущественно.


Поэтому в итоге нет смысла разбивать таблицу на части. Невыгодно. Выгоднее добавлять это поле (ключ разбиения) в индексы и использовать его при фильтрации.
...
Рейтинг: 0 / 0
15.03.2014, 10:53
    #38587100
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
MasterZiv, miksoft, спасибо за ответы! Задал тот же вопрос на SE, там мне ответили, ровно противоположное, правда я не понял аргументацию ответа там. Может вы поймете, что именно usr приводит в качестве доводов? Он ошибается?
Еще раз большое спасибо за ответы!
...
Рейтинг: 0 / 0
15.03.2014, 12:17
    #38587111
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Kolyunya,

Я что-то не увидел там обратного ответа.
...
Рейтинг: 0 / 0
15.03.2014, 12:36
    #38587114
Kolyunya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
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".

Если я правильно понял, он тоже говорит, что выигрыш будет очень маленьким, если будет вообще.

Еще раз спасибо за советы!
...
Рейтинг: 0 / 0
15.03.2014, 14:15
    #38587144
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
Kolyunya, miksoft Вам уже всё правильно сказал. Выигрыш от партиционирования будет в тех случаях, когда запросы будут пытаться делать full table scan. Будут ли они его делать в Вашем случае - Вы пока не знаете. Поэтому делайте пока простую таблицу, а вопрос её партиционирования отложите на время, когда сможете увидеть и проэкспериментировать. Разбить таблицу на партиции не так сложно, а вот взять партиционированную таблицу и понять, что её надо было партиционировать по совсем другому критерию - будет довольно глупо.
...
Рейтинг: 0 / 0
17.03.2014, 12:11
    #38587999
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличит ли определенная денормализация производительность в определнном сценарии?
MasterZiv.

Если доступ был по индексу, то стоимость упадет на логарифм 5, потому что стоимость поиска по индексу логарифмическая.
Really?
Выборка по индексу 100 строк из таблицы в 10 000 000 строк и 100 строк из таблицы в 10 000 строк будет различаться в "логарифм 1000" раз?
Вы, товарищ полковник, с прямым углом перепутали - стоимость поиска одиночного значения по индексу и стоимость выборки по диапазону индекса
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Увеличит ли определенная денормализация производительность в определнном сценарии? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]