|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
Друг попрсил скинуть макетик по секционированию. Может еще кому будет полезен.Поправки и предложения приветствуются Модель секционирования1. Создаём 5 секций с открытой 1-ой секцией (RIGHT-функция секционирования) 1.[архивная секция c открытой левой границей и смещающейся правой границей] (компрессированная) 2.[квартал] 3.[квартал] 4.[квартал] 5.[текущий квартал с открытой правой границей] 2. под каждую секцию создаём файловую группу в 1-ой файловой группе [TEST_FG1] всегда лежит 1 секция ( объём данных растёт по мере сдвига окна и переноса в неё данных) 4 остальных группы [TEST_FG2],[TEST_FG3],[TEST_FG4],[TEST_FG5] ходят по кругу по алгоритму скользящего окна 3. скользящее окно 1. при завершении текущего квартала делаем слияние 1 и 2 секции удаляя 1-ую граничнуюю точку и происходит автоматическое переливание данных из 2 секции в 1 секцию (первоначально из фаловой группы [TEST_FG2] -> [TEST_FG1]) и сеций становиться 4 2. Назначаем освободившуюся файловую группу [TEST_FG2] следующей используемой (NEXT USED) 3. Создаём новую граничную точку начала следующего квартала. При этом 4-ая секция ограничивается новой точкой и создаётся новая 5 -ая секция открытая справа которая размещается в файловой группе [TEST_FG2]. Таким образом данные из самого старого квартала переносятся в архивную секцию а окно из 4 -х кварталов смещается на 1 квартал вперёд. Скрипт создания,тестирования,удаления макета Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 10:58 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
LexusRПоправки и предложения приветствуются У вас SPLIT RANGE происходит "по живому", т.е. по диапазону, наполненному данными. А поскольку эта операция реализована как комбинация удаления из таблицы и вставки в таблицу (вы можете убедиться в этом, посмотрев в профайлере план выполнения этой команды), это слишком накладно. Лучше иметь одну пустую секцию "про запас", тогда SPLIT будет проходить максимально быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 11:34 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
переносятся только данные которые попадают в следующий квартал а это происходит только если данные ошибочны или сдвиг окна происходит с опозданием что является исключительной ситуацией. В штатном режиме новая секция нарезается заблоговременно(за 1-2) дня настроенным JOB-ом и переноса данных никакого нет. В примере я специально накидал тестовых данных за предел чтобы проилюстрировать что даже в этом случае ничего криминального не произойдет кроме переноса незначительного числа записей из одного файла в другой ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 11:42 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
LexusR, Ещё одно замечание для практического применения. Секционирование применяют обычно для хранилищь данных для аналитики, и не в последнюю очередь для того, что бы легко удалять старые данные, так что типично вообще не держат архивные секции. А вообще отличный материал, понятное простое описание и скрипт с примером, спасибо! Предлагаю поместить в FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 12:13 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
LexusRпереносятся только данные которые попадают в следующий квартал для того чтобы это сделать необходимо "посмотреть", нет ли таких данных, даже при наличии кластерного индекса с первым полем дата это все равно seek с несколькими чтениями, плюс не всегда в скользящем окне необходимо дату держать первым полем в кластерном индексе. вообщем я согласен с Гость333, лучше split-ить пустую секцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 12:23 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
[quot split partition]LexusRвообщем я согласен с Гость333, лучше split-ить пустую секцию. Ну в принципе для страховки можно добавить еще один квартал с переди про запас. Принципиально ничего не меняется. Хотя по сравнению с переносом данных в архивную секцию затраты на SPLIT даже если там будет какое то количество записей не значительны ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 13:45 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
alexeyvgLexusR, Ещё одно замечание для практического применения. Секционирование применяют обычно для хранилищь данных для аналитики, и не в последнюю очередь для того, что бы легко удалять старые данные, так что типично вообще не держат архивные секции. С этим полностью согласен - но было требование от бизнеса оставить архивные данные в той же таблице только закомпрессить . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 13:52 |
|
Секционирование со скользящим окном и архивной секцией.
|
|||
---|---|---|---|
#18+
alexeyvg LexusR, Ещё одно замечание для практического применения. Секционирование применяют обычно для хранилищь данных для аналитики, и не в последнюю очередь для того, что бы легко удалять старые данные, так что типично вообще не держат архивные секции. А вообще отличный материал, понятное простое описание и скрипт с примером, спасибо! Предлагаю поместить в FAQ Поместили? Я не нашёл. Модератор, ау! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:04 |
|
|
start [/forum/topic.php?fid=46&msg=38409510&tid=1686692]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 453ms |
0 / 0 |