Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
=Сергей= Member Откуда: Сообщений: 334 |
Друзья, прошу критики и помощи с сегментированием, есть вопрос об установке ограничений на сегменты. В качестве аргумента для функции сегментирования выступает дата, а в целях компактности заменил дату на количество секунд после 2000-01-01 00:00:00.create partition function [pf_date](int) as range right for values() create partition scheme [ps_date](int) as partition [pf_date] to ([primary]) create table [T_BigTable] ( [id] bigint identity(1,1) not null ,[DateTime] int not null ,[ID1] int not null ,[ID2] int not null ,[Count] smallint not null ) on [ps_date]([DateTime]) create index [idx_ID1] on [T_BigTable]([ID1]) on [ps_date]([DateTime]) create index [idx_ID2] on [T_BigTable]([ID2]) on [ps_date]([DateTime]) Каждый день создаётся файловая группа с файлом и в ней stage таблица, а в функцию сегментирования добавляется граничное значение. create table [T_20180620] ( [id] bigint identity(1,1) not null ,[DateTime] int not null ,[ID1] int not null ,[ID2] int not null ,[Count] smallint not null ) on [ps_date]([DateTime]) Таблица заполняется данными за сутки, Затем создаются индексы по [ID1] и [ID2] и таблица переключается в качестве секции в [T_BigTable]. Для чего на стейдж таблицу нужно накладывать ограничения alter table [T_20180620] with check add constraint [T_20180620_CK] check ([DateTime] >= cast(datediff(ss,'2000-01-01','2018-06-20 00:00:00')) and [DateTime] <= cast(datediff(ss,'2000-01-01','2018-06-20 23:59:59.997'))) И как нужно эти ограничения описать при создании сегментированной [T_BigTable]. |
22 июн 18, 10:15 [21511978] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31836 |
При создании сегментированной [T_BigTable] вы указываете схему секционирования ps_date Когда вы делаете стейж таблицу с ограничением, ограничение попадает на одну из секций большой таблицы, указанных в ps_date То есть на большую таблицу ограничение делать не надо, оно делается только на переключаемую таблицу. |
||
22 июн 18, 10:38 [21512080] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8502 |
=Сергей=, ограничение это не какая-то магия, а гарантия того, что в таблице находится содержимое переключаемого сегмента и не более того. |
22 июн 18, 13:20 [21512929] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |