Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Хотелось бы поговорить и послушать о секционировании таблиц для улучшения быстродействия или же архивировании оперативных данных (перенос часть данных в архивную базу) для быстродействия формирования отчётов. Кто с чем сталкивался, кто что может посоветовать? Я немного тестировал с выводом плана выполнения запроса секционированную таблицу и не секционированную. Тестировал на таблице с 10 миллионами записей. Update, Select. По времени выполнения что Update что Select отрабатывает одинаково. При выборке разницу можно увидеть только в плане выполнения запроса. см. ниже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 02:07 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
kossqlВсем доброго времени суток. Хотелось бы поговорить и послушать о секционировании таблиц для улучшения быстродействия или же архивировании оперативных данных (перенос часть данных в архивную базу) для быстродействия формирования отчётов. Кто с чем сталкивался, кто что может посоветовать? Я немного тестировал с выводом плана выполнения запроса секционированную таблицу и не секционированную. Тестировал на таблице с 10 миллионами записей. Update, Select. По времени выполнения что Update что Select отрабатывает одинаково. При выборке разницу можно увидеть только в плане выполнения запроса. см. ниже.Быстродействие либо не изменится, либо может упасть. Удаление старых данных можно сделать быстрым, если это решается удалением секции. Так же можно очень сильно ускорить загрузку данных при определённых условиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 02:12 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
kossqlХотелось бы поговорить и послушать о секционировании таблиц для улучшения быстродействия Секционирование улучшает быстродействие примерно так же, как оператор delete. kossqlкто что может посоветоватьЯ могу посоветовать проблему озвучить, которую вы пытаетесь решать. kossqlТестировал на таблице с 10 миллионами записей. Update, Select.По времени выполнения что Update что Select отрабатывает одинаково. Я тут потестировал. Запрос "select 1" по скорости уделывает все остальные запросы, и даже с секционированием заморачиваться не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 02:15 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
kossqlПри выборке разницу можно увидеть только в плане выполнения запроса. см. ниже.Тест ничего не показывающий. Если у вас FinishDate является условием для любых запросов, то нужно его включать в индексы, или, скорее всего, включить в кластерный индекс. А если не является, то и секционирование не будет использовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 02:17 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
вполне себе улучшает быстродействие при попадании в нужную секцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 07:55 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Критиквполне себе улучшает быстродействие при попадании в нужную секциюЭто если всю секцию просканировать надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 22:30 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Критиквполне себе улучшает быстродействие при попадании в нужную секциюПопадание в нужную секцию эквивалентно сканированию диапазону ключа кластерного индекса. Естественно, если данные позволяют сделать секционирование, то логично кластерный индекс сделать по тому полю, по которому будет разделение на секции, и которое будет во всех запросах. Раз уж такой случай, что нужно сканировать секции. Хотя это само по себе очень странно. Или вы не про сканирование секции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2017, 01:48 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
alexeyvg, с кластерным индексом конечно так, но иногда его нельзя/не так просто создать из-за ПО, которое работает с базой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2017, 10:18 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Критикalexeyvg, с кластерным индексом конечно так, но иногда его нельзя/не так просто создать из-за ПО, которое работает с базойТогда речь об очень специфических случаях. И в ответ на "Хотелось бы поговорить и послушать о секционировании таблиц для " желательно это упомянуть. А то люди втыкают секционирование, "что бы было побыстрее", и получают катастрофу. Вот у нас очень квалифицированные ребята, но по WEBу, воткнули несколько лет назад секционирование в базу, и система остановилась, на несколько недель, потому что база большая, и откатить назад было нереально. Вот как раз тогда меня и взяли на эту работу :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2017, 20:02 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Критикalexeyvg, с кластерным индексом конечно так, но иногда его нельзя/не так просто создать из-за ПО, которое работает с базойВидать очень капризное ПО. Кластерный создать нельзя, а секционирование можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:45 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
MindКритикalexeyvg, с кластерным индексом конечно так, но иногда его нельзя/не так просто создать из-за ПО, которое работает с базойВидать очень капризное ПО. Кластерный создать нельзя, а секционирование можно. ооо, на ловца и зверь бежит. у нас тут сегодня симпозиум какой-то по секционированию. на все вкусы. приглашаю 2 соседние темы почитать для расширения кругозора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:49 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
MindКритикalexeyvg, с кластерным индексом конечно так, но иногда его нельзя/не так просто создать из-за ПО, которое работает с базойВидать очень капризное ПО. Кластерный создать нельзя, а секционирование можно.Такое реально есть. Секционирование более прозрачно для приложений. Может, оно слишком сложно для этих "программистов"?. Вот получить список индексов и констрейнов на таблице они могут, и проверяют, что бы никто не испортил их гениальное творение инедксами и прочим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 00:22 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
alexeyvg....Так же можно очень сильно ускорить загрузку данных при определённых условиях. можно немного подробнее, про ускорение загрузки? или речь идет о bulk insert? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 10:28 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
IDVTalexeyvg....Так же можно очень сильно ускорить загрузку данных при определённых условиях. можно немного подробнее, про ускорение загрузки? или речь идет о bulk insert? Нет. Речь о switch partition. Создаешь рядом с основной секционированной таблицей загрузочную таблицу, целиком повторяющую по структуре (индексам, ограничениям и т.д.), вмещающую в точности сведения одной секции, и выполняешь switch partition. И данные из загрузочной таблицы моментально оказываются в рабочей таблице. Достоинства: Рабочая таблица не блокируется во время формирования данных в партиции и обновление рабочей таблицы происходит мгновенно и одномоментно для всей секции. Очень удобно, если стоит задача не блокировать огромную таблицу на период формирования каких то локальных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 12:29 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
uaggsterРечь о switch partition. спасибо за ответ, насколько я понимаю это возможно только в одной файловой группе. Все верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 12:52 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
IDVTможно немного подробнее, про ускорение загрузки? или речь идет о bulk insert?Нет, в том ответе ведь шла речь о секционировании. Вот uaggster уже написал. Добавлю, что так же быстро можно делать удаление. Но не всегда бизнес-логика с этим совместима, не всегда порция вставляемых или удаляемых данных соответствует секции. Про bulk insert - это отдельная тема. Можно превратить операцию insert ... select в операцию с минимальным логированием, да, как bulk insert. Вот, почитайте, там вначале статьи про это говорится: https://msdn.microsoft.com/en-us/library/dd425070(v=sql.100).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 12:57 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
IDVTuaggsterРечь о switch partition. спасибо за ответ, насколько я понимаю это возможно только в одной файловой группе. Все верно?Переключение - да, в одной. А сами секции могут быть и в разных. У нас вот каждая секция в своём файле, мы так решаем проблему больших бакапов (старые секции помечаем как рид-онли, и ежедневно бакапим только рид-райт секции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2017, 12:59 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
uaggster не блокировать огромную таблицу на период формирования каких то локальных данных. разве блокировка секционированной таблицы происходит не на уровне секций? (предполагаю что данные и индексы секционируются одинаково) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 00:27 |
|
||
|
Секционирование в MS SQL Server
|
|||
|---|---|---|---|
|
#18+
nvvuaggster не блокировать огромную таблицу на период формирования каких то локальных данных. разве блокировка секционированной таблицы происходит не на уровне секций? (предполагаю что данные и индексы секционируются одинаково)Не по дефолту. https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } ) Applies to: SQL Server 2008 through SQL Server 2017 and Azure SQL Database. Specifies the allowed methods of lock escalation for a table. AUTO This option allows SQL Server Database Engine to select the lock escalation granularity that is appropriate for the table schema. If the table is partitioned, lock escalation will be allowed to partition. After the lock is escalated to the partition level, the lock will not be escalated later to TABLE granularity. If the table is not partitioned, the lock escalation will be done to the TABLE granularity. TABLE Lock escalation will be done at table-level granularity regardless whether the table is partitioned or not partitioned. TABLE is the default value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 02:51 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=168&tid=1690446]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 406ms |

| 0 / 0 |
