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

Откуда:
Сообщений: 153
Подскажите, если кто знает, что будет быстрее...

Есть большой массив временных данных.
Его можно хранить в одной таблице и применять партиционирование, скажем по дням
или можно перед импортом в БД разбивать массив на дни и загружать каждый день в отдельную таблицу (скажем table01012009, table02012009, и т.д.).

SQL запросы в основном будут выборка за несколько дней или месяцев (3-4).

Дак вот что будет быстрее на ваш взгляд - партиционирование или разбивка на таблицы?
5 янв 10, 21:54    [8150703]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Есть большой массив временных данных.


Большой, это какой?! 10, 100 лямов записей? Миллиард?

автор
или можно перед импортом в БД разбивать массив на дни и загружать каждый день в отдельную таблицу


Ууу... Что-то куда-то загружается и импортируется? Как? В каких объемах?

автор
SQL запросы в основном будут выборка за несколько дней или месяцев (3-4).


"Выборка" - это SELECT * FROM SomeTable WHERE ... или нечто более сложное?

автор
Дак вот что будет быстрее на ваш взгляд - партиционирование или разбивка на таблицы?


Быстрее будет что?!

автор
загружать каждый день


автор
выборка за несколько дней или месяцев


?

ЗЫ. С мыслями, соберитесь, пожалуйста.
6 янв 10, 00:08    [8151023]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
miks85
Подскажите, если кто знает, что будет быстрее...

Есть большой массив временных данных.
Его можно хранить в одной таблице и применять партиционирование, скажем по дням
или можно перед импортом в БД разбивать массив на дни и загружать каждый день в отдельную таблицу (скажем table01012009, table02012009, и т.д.).

SQL запросы в основном будут выборка за несколько дней или месяцев (3-4).

Дак вот что будет быстрее на ваш взгляд - партиционирование или разбивка на таблицы?


У меня запросы на SELECT выполнялся быстрее на секционированной таблице (30 млн. записей), чем SELECT с UNION ALL с кучей таблиц (3 таблице по 10 млн. записей). Я так понял UNION дорогостоящая операция.
6 янв 10, 12:42    [8151737]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
Большой, это какой?! 10, 100 лямов записей? Миллиард?
около 45 миллионов записей

Ууу... Что-то куда-то загружается и импортируется? Как? В каких объемах?
Из DBF эти 45 лямов загружаются в БД

"Выборка" - это SELECT * FROM SomeTable WHERE ... или нечто более сложное?
Что-то типа select * from table where date > '01/01/2009' and date < '01/06/2009'

Быстрее будет что?!
Быстрее select из партиционированных таблиц или union'ы из множества таблиц?
6 янв 10, 13:40    [8151910]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
около 45 миллионов записей


Это в день, месяц, год, общий предполагаемый объем данных?

автор
Что-то типа select * from table where date > '01/01/2009' and date < '01/06/2009'


Гм... Достаточно будет кластерного индекса по datе при размере таблицы ~ лярд записей.

автор
Быстрее select из партиционированных таблиц или union'ы из множества таблиц?


На первый вопрос ответьте, пожалуйста.
6 янв 10, 14:07    [8152007]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
pkarklin
[quot автор]около 45 миллионов записей


Всего - 45 лямов (4 года),
в день ~ 100.000
6 янв 10, 14:11    [8152017]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
miks85
Всего - 45 лямов (4 года),
в день ~ 100.000


Не парьтесь с партицированием.
6 янв 10, 14:14    [8152026]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
pkarklin
miks85
Всего - 45 лямов (4 года),
в день ~ 100.000


Не парьтесь с партицированием.


Зато нужно будет париться с запросами типа - хочу получить данные за месяц...
select * from t01012009
union
select * from t02012009
union
....
union
select * from t30012009

это при разбивке на таблицы, а если 6 месяцев...? %)
6 янв 10, 14:25    [8152052]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
miks85,

По-ходу Вы меня не поняли. Ваши объемы - это одна таблица.
6 янв 10, 14:32    [8152072]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
pkarklin
miks85,

По-ходу Вы меня не поняли. Ваши объемы - это одна таблица.

хы... я попробовал разбить по дням и в результате
select * from table where date = '01/01/2009'
вместо 17 секунд, выполняется за 300 мс... разница более чем в 50 раз %)
6 янв 10, 14:36    [8152082]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
Glory
Member

Откуда:
Сообщений: 104760
miks85
pkarklin
miks85,

По-ходу Вы меня не поняли. Ваши объемы - это одна таблица.

хы... я попробовал разбить по дням и в результате
select * from table where date = '01/01/2009'
вместо 17 секунд, выполняется за 300 мс... разница более чем в 50 раз %)

А что вы сделали для того, чтобы на единой таблице такой запрос выполнялся быстрее ?
Создали индекс, например ?
6 янв 10, 14:38    [8152094]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
miks85
хы... я попробовал разбить по дням и в результате
select * from table where date = '01/01/2009'
вместо 17 секунд, выполняется за 300 мс... разница более чем в 50 раз %)


Осталось только узнать самую малость, как у Вас все было организовано "До" и "После".

ЗЫ. Достаточно будет планов выполнения.
6 янв 10, 14:38    [8152096]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
pkarklin

Осталось только узнать самую малость, как у Вас все было организовано "До" и "После".


До: одна таблица на 45 лямов записей без всяких индексов
После: захотелось попробовать разбить по дням, создал новую БД, при миграции создаю на каждый день новую таблицу и insert'ю данные туда
6 янв 10, 14:46    [8152120]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
miks85
До: одна таблица на 45 лямов записей без всяких индексов
После: захотелось попробовать разбить по дням, создал новую БД, при миграции создаю на каждый день новую таблицу и insert'ю данные туда


Это просто бесподобно - таблица без индесов. Прежде чем лезть в дебри партицирования разберитесь с элементарным индексированием в рамках одной таблицы. Подсказки, кстати, уже были даны.
6 янв 10, 14:52    [8152137]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
miks85
Member

Откуда:
Сообщений: 153
pkarklin
miks85
До: одна таблица на 45 лямов записей без всяких индексов
После: захотелось попробовать разбить по дням, создал новую БД, при миграции создаю на каждый день новую таблицу и insert'ю данные туда


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


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

PS: С БД кроме как select * from никогда не работал, так что не обессудьте...
6 янв 10, 14:55    [8152146]     Ответить | Цитировать Сообщить модератору
 Re: Партиционирование или разбивка таблиц ручками?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
miks85
Да я уже почитал про индексы


Вот это вот здорово!

miks85
PS: С БД кроме как select * from никогда не работал, так что не обессудьте...


Да мы, как бы и не очень...
6 янв 10, 15:02    [8152165]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить