Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
Всем привет!


У меня есть таблица история продаж, поле дата_платежа, история храниться за три года, таблица уже очень большая, поэтому критично снизилось время генерации отчетов с этой таблицы, необходимо создать в этой таблице секции (по дате платежа), гуглил но чаще всего попадаю на это - Создание секционированных таблиц и индексов [url=]http://technet.microsoft.com/ru-ru/library/ms188730.aspx [/url]

Вот тут не очень понятно:

....
Ниже Строки щелкните Добавить. В новой строке введите имя файловой группы.
Предупреждение Внимание!
В дополнение к числу файловых групп, указанному в качестве граничных значений при создании секций, всегда требуется еще одна дополнительная файловая группа.
Продолжайте добавлять строки до создания всех файловых групп для секционированной таблицы.
....

то есть если я хочу создать секции для поля дата_платежа, то мне нужно на каждый месяц каждого года по две файловые группы?
13 янв 14, 11:56    [15406962]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Sputnick,

Секции и файловые группы напрямую никак не связаны, вы просто указываете в какой ФГ будет лежать секция
13 янв 14, 12:24    [15407171]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
WarAnt
Sputnick,

Секции и файловые группы напрямую никак не связаны, вы просто указываете в какой ФГ будет лежать секция


спасибо за ответ, то есть я просто могу создать две файловые группы для своего поля, которое буду секционировать?
13 янв 14, 12:27    [15407194]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Sputnick,

Вы бы сначала определились где будете хранить будущие секции. ФГ для всех секций может бить одна, а могут быть и разные.
13 янв 14, 12:32    [15407234]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Sputnick
WarAnt
Sputnick,

Секции и файловые группы напрямую никак не связаны, вы просто указываете в какой ФГ будет лежать секция


спасибо за ответ, то есть я просто могу создать две файловые группы для своего поля, которое буду секционировать?

да
13 янв 14, 12:36    [15407254]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
NickAlex66
Sputnick,

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


пока практически не приступил к созданию, не очень понял ваш ответ - "где будете хранить будущие секции".

В справке msdn как то теоретично описано, не очень понятно
13 янв 14, 12:43    [15407324]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Sputnick,

Секции привязываются к ФГ с помощью партишн схемы. ФГ в свою очередь содержат файлы данных. Ну а последние могут лежать на разных дисках.
13 янв 14, 12:56    [15407462]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
NickAlex66
Sputnick,

Секции привязываются к ФГ с помощью партишн схемы. ФГ в свою очередь содержат файлы данных. Ну а последние могут лежать на разных дисках.


понял, спасибо.

все в одном месте будет, там же где и бд, там высокоскоростной рейд.
13 янв 14, 12:59    [15407496]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
нашел думаю исчерпывающую статью по секционированию - [url=]Секционированные таблицы и индексы SQL Server 2005 https://www.sql.ru/articles/mssql/2005/073102partitionedtablesandindexes.shtml#1[/url]
13 янв 14, 13:09    [15407572]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
ребят я правильно сделал (скриншот)

я хочу сделать 1 секцию, в которой будут данные за 2013 год, диапозон дат указал ежегодно.

К сообщению приложен файл. Размер - 90Kb
11 фев 14, 16:46    [15552431]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
на тесте попробовал, все ок, скорость генерирования отчетов увеличилась более чем в 2 раза.

на реалке хотел создать секционирование как по 2013 году так и по 2012..... но мастер мне позволял выбирать только один год (3 файловые группы) если добавлял еще период, то после указания границ первые строки затирались последними.... как же указать несколько лет?
23 фев 14, 13:05    [15614248]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Sputnick
на тесте попробовал, все ок, скорость генерирования отчетов увеличилась более чем в 2 раза.

на реалке хотел создать секционирование как по 2013 году так и по 2012..... но мастер мне позволял выбирать только один год (3 файловые группы) если добавлял еще период, то после указания границ первые строки затирались последними.... как же указать несколько лет?


Плюньте вы на этот убогий визард ибо скрывает то, в чем прячется дьявол - детали. Режьте таблицу на секции с помощью TSQL - узнаете как устроено секционирование под капотом, так сказать.

Пример функции:
+

DECLARE @Borders nvarchar(max) = '', @BoundaryDate datetime;

SELECT TOP 1 @BoundaryDate = дата_платежа
FROM dbo.таблица история продаж /* если схема не dbo - поменяйте */
ORDER BY дата_платежа ASC

SET @BoundaryDate = DATEADD(month, 1, @BoundaryDate)
SET @BoundaryDate = CONVERT(datetime, CAST(YEAR(@BoundaryDate) AS varchar) + '-' + CAST(MONTH(@BoundaryDate) AS varchar) + '-01', 102)
SET @Borders = @Borders + '''' + CONVERT(nvarchar(30), @BoundaryDate, 121) + ''''

WHILE DATEDIFF(month, @BoundaryDate, GETDATE()) > -1 -- up to first day next month
BEGIN
SET @BoundaryDate = DATEADD(month, 1, @BoundaryDate)
SET @Borders = @Borders + ', ''' + CONVERT(nvarchar(30), @BoundaryDate, 121) + ''''
END

EXEC ('CREATE PARTITION FUNCTION [pf_SalesHistory](datetime) AS RANGE RIGHT FOR VALUES (' + @Borders + ')')
/* использовать RANGE RIGHT or RANGE LEFT - решайте сами влияет на две вещи - гугл в помощь, если в гугле забанили, то сюда */

Пример схемы:
+

CREATE PARTITION SCHEME [ps_SalesHistory] AS PARTITION [pf_SalesHistory] ALL TO ([PRIMARY]) /* ваш случай */


То что я привел, это даже не детали, а две из трех рабочих лошадок, которые направляют данные в нужные партиции.
И да, с праздником всех защитников ! :)
23 фев 14, 14:58    [15614625]     Ответить | Цитировать Сообщить модератору
 Re: Создание секций (секционированные таблицы) в уже существующей таблице  [new]
Sputnick
Member

Откуда: http://city-afisha.com
Сообщений: 692
[quot NickAlex66]
Sputnick
То что я привел, это даже не детали, а две из трех рабочих лошадок, которые направляют данные в нужные партиции.
И да, с праздником всех защитников ! :)


спасибо, взаимно с праздником!
23 фев 14, 15:06    [15614655]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить