Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Запрос к партицированной таблице и к обычной таблице  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1049
Гавриленко Сергей Алексеевич
Roust_m,

"Все татары кроме я." (с)

Вы можете понятнее выражаться?
Особенно на тему у кого там Azure случился?
И очень интересно, когда вы сообщаете, что у вас контроля над версией нет. Вы уже готовитесь к тому, что вам MS SQL 4.2 раскатают? Или 7.0?


В нашей среде, если нужна база, то отвечающий за это человек заходит на Azure портал и нажимает несколько кнопок, указывая какого размера и производительности нужна база. Выбора версии там нет. Старых версий у нас не раскатают, наоборот, в такой среде Майкрософт использует самую новую версию, даже если она не вышла еще на рынок. Вы разве про это не знаете? Да, они на клиентах как на хомячках обкатывают новую версию, зато потом, когда она готова, получается гораздо стабильнее.
Я только что сам туда зашел, кнопки выбрать версию (2016 к примеру) не увидел.
9 окт 19, 04:02    [21989979]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к партицированной таблице и к обычной таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29246
Roust_m
Ну хорошо, как тогда в терабайтной таблице данные искать?
Какая разница, сколько байт в таблице, если вам нужно считать сектор №123321?
9 окт 19, 07:31    [21989990]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к партицированной таблице и к обычной таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29246
Roust_m
alexeyvg
Вот у вас есть индекс, там указано, что ваши данные находятся на диске в секторе № 123321
Сервер читает сектор 123321, готово!

Далее, вы задаёте вопрос: "как можно сервер заставить сканировать одну партицию"

Вы понимаете, что такой вопрос абсурден, в контексте задачи "прочитать сектор 123321"?

Ну контекст задачи немного шире. Еще одной целью партицирования было собрать все записи по одному и тому же студенту в одной партиции, вместо того, чтобы им быть разбросанными по всей таблице. У одного студента может быть несколько sid. Но pkey есть функция от id студента (st_id). В приложении этот запрос не единственный, поэтому задача заставить это запрос работать на секционированной таблице как можно быстрее. Это на не секционрованной таблице по этому запросу есть индекс где указано, что данные находятся в секторе № 123321. А на секционированной так не получется. Но поскольку секционирование в нашем случае нужно (IMHO), то приодится искать компромисы.
Между тем, что все записи по одному и тому же студенту в одной партиции, или они разбросаны по всей таблице, нет никакой разницы.

У вас всего лишь 3 варианта:

1) Вы делаете так, что бы все данные запроса читались в одном блоке (как - вам уже писали).
Тогда неважно, в одной партиции у вас данные, или в нескольких. Вы читаете их одной дисковой операцией.

2) Данные разбросаны по разным секторам, и для получения данных вам нужно прочитать N секторов из некоего набора (№123321, №765567, №444333, .........).
В этом случае тоже неважно, в одной партиции у вас данные, или в нескольких. Вы просто читаете с диска сектора из списка. Если данные в одной партиции, то сектора будут поближе друг к другу, ну и что?

3) У вас нет списка секторов. Для получения данных вы должны просканировать фрагмент таблицы по какому то условию, и потом их отфильтровать.
Да, в этом случае, как одно из решений, можно использовать секционирование.
Но можно использовать и другие варианты, никакого преимущества секционирования перед ними нет (за исключением неких тонкостей, но глупо, не зная их, цепляться за секционарование).
Однако, тут (вариант 3) важно понимать, что такое сканирование (пусть даже одной секции) - признак грубейшей ошибки проектирования, которая сделает невозможным практическое использование базы данных (почти всегда, хотя есть и исключения).
9 окт 19, 07:44    [21989996]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к партицированной таблице и к обычной таблице  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2300
Roust_m
Вот скрипт партицированной таблицы. Там 15000 партиций. Ключ pkey есть функция от st_id: st_id % 14999 +1
Сорри, не стал читать весь топик, но это самое идиотское секционирование которое я когда либо видел в жизни.
10 окт 19, 22:45    [21991741]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Microsoft SQL Server Ответить