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

Откуда: Киев
Сообщений: 39
Всем добрый день.
Изучаю секционированные таблицы по руководству и голова уже квадратная https://www.sql.ru/articles/mssql/200...dexes.shtml#58

вот примерно что я делаю:
create partition function test_sect_fn(Datetime) as
range left for values ( '20091231 23:59:59.997',
                        '20121231 23:59:59.997',
                        '20141231 23:59:59.997')


create partition Scheme [test_sect_scheme] as -- файловая група одна
partition dsa_test_sect_fn
    all to ([PRIMARY])


create table dbo.test_sect -- ограничения не ставлю как в примере
    (id int not null,
    [date] datetime not null)
        on test_sect_scheme (date)


insert into dbo.test_sect
select
    id,
    date
from dbo.lines



В итоге получается одна таблица dbo.test_sect.
1. Поиск данных по этой таблице уже будет проводится параллельно по 3-м секциям как указанно в функции?

План выполнения при выборке данных по всей таблице указывает один "Просмотр строк таблицы" (100%) и один "Select" (0%)
select
*
from dbo.test_sect

2. Как удостоверится что таблица секционирована?
3. Где именно можно увидеть все функции partition? не нашёл их в обозревателе объектов.
31 янв 13, 13:11    [13856385]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Devil_FoX
https://www.sql.ru/articles/mssql/200...dexes.shtml#58

Информация
Ошибка 404: Запрошенный URL не найден на сервере.
31 янв 13, 13:36    [13856635]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Devil_FoX
В итоге получается одна таблица dbo.test_sect.
1. Поиск данных по этой таблице уже будет проводится параллельно по 3-м секциям как указанно в функции?
в какой функции указано, что поиск будет проводиться параллельно?
Devil_FoX
План выполнения при выборке данных по всей таблице указывает один "Просмотр строк таблицы" (100%) и один "Select" (0%)
select
*
from dbo.test_sect

2. Как удостоверится что таблица секционирована?
надо посмотреть в плане в свойства "Просмотра строк таблицы" и увидеть сведения о секционировании, например
Devil_FoX
3. Где именно можно увидеть все функции partition? не нашёл их в обозревателе объектов.
вы о чем?
31 янв 13, 13:43    [13856711]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Shakill, функция create partition function test_sect_fn(Datetime) её я не могу найти в обозревателе объектов, она делит на секции таблицу

точная ссылка на ресурс по которому делаю
https://www.sql.ru/articles/mssql/2005/073102partitionedtablesandindexes.shtml#58

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

К сообщению приложен файл. Размер - 26Kb
31 янв 13, 14:07    [13856909]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Devil_FoX
не вижу где указано что таблица отрабатывает одновременно три секции

А где сказано, что секции должны обрабатываться одновременно ?
31 янв 13, 14:10    [13856938]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Devil_FoX
1. Поиск данных по этой таблице уже будет проводится параллельно по 3-м секциям как указанно в функции?

В вашем примере создаётся 4 секции, а не 3.
Если на прямой линии поставить три точки, сколько получится интервалов?
Также смотрите результаты запроса:
select * from sys.partitions where object_id = object_id('dbo.test_sect')
Обратите внимание на столбец partition_number.

Devil_FoX
2. Как удостоверится что таблица секционирована?

Ну, например,
sp_help 'dbo.test_sect'
В выведенных результатах ищите Data_located_on_filegroup.

Devil_FoX
3. Где именно можно увидеть все функции partition? не нашёл их в обозревателе объектов.

Раскрываете вашу БД, ищете пункт Storage, в нём — Partition Functions. Как это называется в "обозревателе объектов", не знаю.
31 янв 13, 14:12    [13856960]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Devil_FoX
во вложении скрин с планом выполнения - не вижу где указано что таблица отрабатывает одновременно три секции, только утверждение что она секционированная.

Вообще интересно, в SQL Server 2005 перебор секций отображается в плане запроса:
set showplan_text on
go
select *
from dbo.test_sect
go
set showplan_text off
go

  |--Nested Loops(Inner Join, OUTER REFERENCES:([PtnIds1004]) PARTITION ID:([PtnIds1004]))
|--Constant Scan(VALUES: (((1)),((2)),((3)),((4))))
|--Table Scan(OBJECT:([t].[dbo].[test_sect]))

В SQL Server 2008 — не отображается:
  |--Table Scan(OBJECT:([t].[dbo].[test_sect]))

Картинка плана запроса в 2005 выглядит так:

К сообщению приложен файл. Размер - 76Kb


Сообщение было отредактировано: 31 янв 13, 14:27
31 янв 13, 14:21    [13857035]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
В пропертях все есть в 2008.

Сообщение было отредактировано: 31 янв 13, 14:26
31 янв 13, 14:26    [13857080]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Glory
А где сказано, что секции должны обрабатываться одновременно ?


Со статьи я понял что секционирование ускоряет вывод информации с таблицы, распаралеливая поиск по таблице.
Я хочу ускорить вывод информации с таблицы где более 300 млр. строк и каждый день вливается новая информация.
индексы помогают с таким объёмом, но хочется ещё быстрее обработку.

У меня SQL Server 2008
31 янв 13, 14:34    [13857159]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Гавриленко Сергей Алексеевич,
Можете уточнить кодом?
31 янв 13, 14:35    [13857174]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Devil_FoX
Со статьи я понял что секционирование ускоряет вывод информации с таблицы, распаралеливая поиск по таблице.

Цитату приведите
31 янв 13, 14:35    [13857176]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Devil_FoX
таблицы где более 300 млр. строк

"млр" — это миллионы? или миллиарды?
31 янв 13, 14:44    [13857270]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Glory,
ну хотя бы начало статьи:
автор
Например, вместо того, чтобы группировать данные в одной большой таблице, SQL Server может группировать их в нескольких секциях независимо друг от друга, и затем объединить агрегаты. В SQL Server 2005, объединения могут извлекать данные непосредственно из секций;


автор
Там, где таблицы и индексы становятся слишком большими, секционирование может помочь, расщепляя большие массивы данных на меньшие, более управляемые "куски" (т.е. секции). Тип секционирования, описанного в этой статье, называют горизонтальным секционированием. При горизонтальном секционировании большие "куски" строк сохраняются в нескольких отдельных секциях. Архитектура секционированных данных выбирается, настраивается и управляется согласно вашим потребностям. Секционирование в SQL Server 2005 позволяет вам разделять ваши таблицы, основанные на индивидуальных моделях использования данных, задавая ограниченные диапазоны.
31 янв 13, 14:44    [13857271]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Гость333, миллиарды
31 янв 13, 14:44    [13857277]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Devil_FoX
Glory,
ну хотя бы начало статьи:
автор
Например, вместо того, чтобы группировать данные в одной большой таблице, SQL Server может группировать их в нескольких секциях независимо друг от друга, и затем объединить агрегаты. В SQL Server 2005, объединения могут извлекать данные непосредственно из секций;


автор
Там, где таблицы и индексы становятся слишком большими, секционирование может помочь, расщепляя большие массивы данных на меньшие, более управляемые "куски" (т.е. секции). Тип секционирования, описанного в этой статье, называют горизонтальным секционированием. При горизонтальном секционировании большие "куски" строк сохраняются в нескольких отдельных секциях. Архитектура секционированных данных выбирается, настраивается и управляется согласно вашим потребностям. Секционирование в SQL Server 2005 позволяет вам разделять ваши таблицы, основанные на индивидуальных моделях использования данных, задавая ограниченные диапазоны.


И в вашем запросе есть агрегаты ?
Какая часть вашего запроса подразумевает необходимость _одновременного_ доступа к разным секциям ?
31 янв 13, 14:48    [13857312]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Devil_FoX
Гость333, миллиарды

Круто... А сколько места занимает эта таблица, если не секрет?
31 янв 13, 14:50    [13857339]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
сори. миллионов.
голова квадратная от статьи по секционированию.
посмотрел не ту таблицу.
у меня таблица содержит по дням, филиалам, артикулам данные с 2008 года.
итого сейчас 487 миллионов строк.
хотя это всего 1/30 части от основной таблицы за этот же период (а у неё больше период на много) которой заведую уже не я.
31 янв 13, 14:51    [13857348]     Ответить | Цитировать Сообщить модератору
 Re: Секционированные таблицы  [new]
Devil_FoX
Member

Откуда: Киев
Сообщений: 39
Гость333
Круто... А сколько места занимает эта таблица, если не секрет?

моя весит чуть больше 60 Гб.
чужая таблица, откуда рассчитываю данные для своей, не знаю - мне на её синонимом дали права.
31 янв 13, 14:54    [13857379]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить