|
|
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
hi all В новой базе (имя = TRNUNDO.FDB) с pagesize = 4K создаю таблицу и заталкиваю в неё 40 тыс строк: Код: sql 1. 2. 3. 4. Затем делаю gfix -w async TRNUNDO.FDB и копирую её в отдельный файлик (он весит 554 Мб). Далее запускаю трейс и выполняю батник: Код: plaintext 1. - где содержимое скрипта `trnundo.sql` есть: Код: sql 1. 2. 3. 4. 5. И вот что вижу в итоге: Код: plaintext 1. 2. 3. 4. То есть, на выполнение quit'a было затрачено 22 сек. Трейс же показывает, что якобы всё прекратилось именно в 15:54:02, т.е. когда он засёк получение команды QUIT. Что тогда там еще делалось 22 сек ? trace, ~200 rows Код: plaintext 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. PS. Замеры повторял несколько раз. Время "обдумывания" команды QUIT никогда не было меньше 15 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 16:06:14 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
Таблоидзаталкиваю в неё 40 тыс строк так я тебе и поверил :-) ТаблоидЧто тогда там еще делалось 22 сек ? кеш писался на диск. Роллбек при большом числе изменений (когда undo не используется) не сбрасывает кеш синхронно. В твоем случае он будет сбрасываться при последнем дисконнекте, но уже после убиения аттача (ибо кеш не привязан к нему), поэтому и в трейс не попадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:39:08 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидзаталкиваю в неё 40 тыс строктак я тебе и поверил :-)да, пардон, очепятка случилась... в 10 раз побольше было... :-) dimitrТаблоидЧто тогда там еще делалось 22 сек ?кеш писался на диск. Роллбек при большом числе изменений (когда undo не используется) не сбрасывает кеш синхронно. В твоем случае он будет сбрасываться при последнем дисконнекте , но уже после убиения аттача (ибо кеш не привязан к нему), поэтому и в трейс не попадает.да, вижу: добавил еще один коннект ("N"), в первом выполнил снова этот bulk update + quit - и он вылетел сразу. А вот коннект-"N" на quit'e застрял. Это только в SS такое, или в SC тоже так должно быть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 09:54:00 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
dimitrРоллбек при большом числе изменений (когда undo не используется) не сбрасывает кеш синхронно. В твоем случае он будет сбрасываться при последнем дисконнекте, но уже после убиения аттача (ибо кеш не привязан к нему), поэтому и в трейс не попадает.Он *не* сбрасывается, если: 1) открыть isql_1, ничего в нём не делать 2) запустить вышеприведенный bat'ник 3) дождаться окончания работы этого батника 4) закрыть isql_1 "крестиком". Пункт "4" отработает, ясный пень, мгновенно, никаких тут 20 секунд не будет. Наблюдение же за процессом fbserver в PE показывает, что он даже не чухается, что к нему последний коннект пропал и ничего не сбрасывает на диск - см аттач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 10:00:48 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
dimitrкеш писался на диск. Роллбек при большом числе изменений (когда undo не используется) не сбрасывает кеш синхронно. В твоем случае он будет сбрасываться при последнем дисконнекте, но уже после убиения аттача (ибо кеш не привязан к нему), поэтому и в трейс не попадает.Что-то вспомнил только сейчас... А вот активность "системного" ATT=0, отвечающего как раз за сброс кеша (его имя в трейсе = CACHE WRITER) - разве она не должна показываться как раз после убиения последнего "нормального" аттача (т.е. последнего isql-окна) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 18:56:27 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за некрофилию. dimitrРоллбек при большом числе изменений (когда undo не используется) не сбрасывает кеш синхронно. Смотрю вот я в исходники и вижу, что когда undo таки используется, то кэш синхронно сбрасывается аж два раза: один раз перед откатом данных, второй - после. В комменте сказано, что это делается для очистки графа зависимостей и избежания дедлоков. Но не слишком ли брутальным способом?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2014, 19:33:49 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovСмотрю вот я в исходники и вижу, что когда undo таки используется, то кэш синхронно сбрасывается аж два раза: один раз перед откатом данных, второй - после.Реально пишутся только грязные страницы, так что не всё так страшно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2014, 21:38:08 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
hvladРеально пишутся только грязные страницы, так что не всё так страшно. Всё равно я не врубаюсь в чём проблема с зависимостями. При откате могут испачкаться только те страницы, которые уже затрагивались транзакцией. Так что в лучшем случае они всё ещё сидят в кэше, грязные, и их граф зависимостей не изменится. В худшем - начнут читаться с диска и вытеснят текущие грязные вместе с их графом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2014, 22:09:37 |
|
||
|
Затраты на quit = 20 сек после update 400'000 строк и его rollback'a. Why ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВсё равно я не врубаюсь в чём проблема с зависимостями.Создаём бекверсию: первичная страница должна быть записана после вторичной. Откатываем эту бекверсию: первичная страница должна быть записана до вторичной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2014, 23:39:41 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38596362&tid=1563781]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 439ms |

| 0 / 0 |
