|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
Всем привет. Занимаюсь сокращением времени выполнения длинной обработки. Дано: Есть таблица, на 300млн записей, на таблице есть поле PartNumber, те это условная партиция в таблице, есть хранимая процедура, которая каждую ночь апдейтит множество записей в этой таблице: Индексы: Код: 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.
Хранимка содержит последовательное выполнение подобных циклов: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
В момент выполнения данной обработки подразумевается, что с данными никто не работает, от сюда не ясна вся эта пляска с PartNumber, не уверен, что последовательно 10 раз выполнить апдейт 10 частей эффективней, чем 1 раз или я не прав? Задача: ускорить выполнение данной обработки. Первое, что приходит на ум - это параллельно выполнять обработки из подобных циклов, в рамках одной таблицы параллельные сессии могут работать с одними и теми же страницами и вызывать блокировки. Поможет ли нарезка этой большой таблицы на 10 отдельных таблиц, 1 таблица для 1 PartNumber, смогу ли я применять апдейты на все таблицы обращаясь к view? Например: Код: sql 1. 2. 3. 4.
Будет ли равноценно работать в таком виде? Код: sql 1. 2. 3. 4.
Может быть вы совершенно по другому подошли бы к решению задачи, поделитесь мнением. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 11:21 |
|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
Я бы совершенно по другому подошел бы к решению задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 11:42 |
|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
teCa, PartNumber какой тип данных имеет? В этом есть смысл, которые проверяется на практике с секундомером - более короткие транзакции и менее ёмкие предпочтительнее при многопользовательской работе или при ограниченных ресурсах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 12:52 |
|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
Владислав Колосов PartNumber какой тип данных имеет? PartNumber int Владислав Колосов более короткие транзакции и менее ёмкие предпочтительнее при многопользовательской работе или при ограниченных ресурсах. Да, но в этом конкретном случае сервер отключает от себя все соединения и занимается расчетом, все ресурсы в его распоряжении. Поэтому и возникло подозрение, что все пляски с делением на куски с первого взгляда выглядят не очень эффективными. Вчера добавил флаги внутри процедуры и выяснилось, что самый долгий кусок когда выглядит вот так: Код: 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.
Что с этими многочисленными апдейтами сделать можно я не понимаю Модератор: Портяночки в тег спойлер пакуйте, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 14:06 |
|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
teCa, на первый взгляд имеются совершенно одинаковые части. Придётся в логике Вам покопаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 16:32 |
|
Есть ли смысл переходить с 1й большой таблицы на 10 поменьше?
|
|||
---|---|---|---|
#18+
teCa, я б для начала разобрался в логике могу подать идею к-я может прокатить ( Но может и НЕ прокатить ) Если таблица dbo.tblSuperMainFull_V2 в жойнах использцется как-то НЕ целиком (скажем за месяц) - то возможно selecе into #Tmp1 where date between... (и взожмно даже НЕ весь набор полей - а тольк нужный ) сделать по ней индексы (нужные) сделать резльутируюшую таблицу #Tmp_res и запихнуть ее назад в tblSuperMainFull_V2 может получиться быстрей скажем такая идея прокатывала у меня давно для примитивного биллинга за месяц Ежели данные tblSuperMainFull_V2 используются ВСЕ - то увы не прокатит и все равно надо смотреть логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 12:28 |
|
|
start [/forum/topic.php?fid=46&fpage=30&tid=1684932]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 436ms |
0 / 0 |