|
|
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
hi all Intro. Из семинара по транзакциям, 04-jun-2014, msk:Moscow_05_Garbage_collection.pdf, page 14BACKOUT: удаляем только первичную версию и восстанавливаем предыдущую Всё ниже показанное сделано на новых базах с page_size = 8192, FW = OFF. DDL (таблица с 2 млн строк, индексное по полю 'x' имеет селективность = 0.01 и весьма хреновый фактор кластеризации = 0.66) : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. gstat -r -t T Код: 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. Тестовый скрипт: Код: 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. Запускаю его несколько раз на LI-V2.5.3.26788 и на LI-T3.0.0.31250. Оба ФБ - в режиме SuperServer, конкурирующих аттачей нет. Конфиг 2.5: Код: plaintext 1. 2. 3. 4. Конфиг 3.0: Код: plaintext 1. 2. 3. Результаты трейса (показаны, начиная со второго запуска на каждом ФБ): 1) для 2.5 : Код: 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. Код: 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. Разное число фетчей... марок... разное время (в 2.5) при отсутствии, повторюсь, конкурирующих активностей на серваке. Но главное - ненулевые backout'ы при отсутствии чего-либо, создававшего версии строк. Причём, их значения - тоже разные (особливо в 2.5). Чем это всё можно оюъяснить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 18:32 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
SELECT WITH LOCK естественно создает версию записи, ты опять школу проспал? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 18:34 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
dimitrSELECT WITH LOCK естественно создает версию записи, ты опять школу проспал? :-)гм... странно: пребывал в блаженной уверенности, что на семинаре из уст кого-то из Монстров Рока прозвучала фраза, что select for update НЕ создаёт версии... Впрочем может, поглючилось... Но! Почему тогда нет бекверсий вот тута: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. trace: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 18:52 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Таблоидselect for update НЕ создаёт версии. select for update не создает версии select with lock - создает версии with lock появился в 1.5. for update, как и ранее, в соответствии с http://www.firebirdsql.org/refdocs/langrefupd25-select.html#langrefupd25-with-lock для with lock не является обязательным, и имеет только один эффект - помещение в пакет по 1 записи, вместо забивания пакета записями в обычных условиях. Тут совсем подробно http://www.firebirdsql.org/refdocs/langrefupd25-notes-withlock.html и напомню http://www.ibase.ru/devinfo/pslock.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:13 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидПочему тогда нет бекверсий вот тута: Потому что они автооткатились. Стартуй странзакция с NO AUTO UNDO и будет тебе счастье. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:34 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Разобрался. Ненулевые backout'ы будут, если стартовать транзакцию _с_ кляузой no auto undo. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И это - удивляет как бэ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:38 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТаблоидПочему тогда нет бекверсий вот тута: Потому что они автооткатились. Стартуй странзакция с NO AUTO UNDO и будет тебе счастье.да, я уже это увидел, спс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:38 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Остался еще вопросик. Какими фазами Меркурия объясняются разные значения backout'ов (см стартовый пост), особливо в 2.5 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:52 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидОба ФБ - в режиме SuperServer может, фоновый сборщик мусора что-то успевает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 19:59 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
kdvТаблоидОба ФБ - в режиме SuperServerможет, фоновый сборщик мусора что-то успевает?Он должен в таком случае успевать убрать всё, т.е. в трейсе я не должен видеть ни backout'ов, ни пугренов, ни экспунгов. Ибо вот модифицир. скрипт: Код: 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. isql Код: 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. trace Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 21:33 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Таблоидkdvможет, фоновый сборщик мусора что-то успевает?Он должен в таком случае успевать убрать всё, т.е. в трейсе я не должен видеть ни backout'ов, ни пугренов, ни экспунгов.С чего ты взял, что он должен всё успеть ? ТаблоидСколько времени ему (фоновому GC) надо на "уборку территории" ?N, а может и M PS Возьми мониторинг в руки и смотри за фоновым сборщиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 22:47 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
dimitrSELECT WITH LOCK естественно создает версию записи А создаёт ли он новую версию записи если текущая версия уже создана текущей транзакцией? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 23:42 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА создаёт ли он новую версию записи если текущая версия уже создана текущей транзакцией? будет update-in-place ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2014, 00:09 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
dimitrбудет update-in-place Может, записи, выбранные select с with lock, ещё и в undo log добавляются? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2014, 14:00 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
hvladВозьми мониторинг в руки и смотри за фоновым сборщикомПроверил. НЕ работает фоновый сборщик. Или, может, не должен работать - не знаю. DDL : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. file = `gc_test.sql` Код: 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. Запускаемый скрипт (file = `gc_run.sql`): Код: plaintext 1. 2. 3. 4. 5. Стартуем в окне-1 : Код: plaintext Тут же стартуем в окне-2: file = `askmon_7200.sh` Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. `askmon_7200.sql` Код: 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. Лог вывода скрипта, который лочил строки, делал затем коммит и выполнял "другую активность" несколько раз: `gc_run.log` Код: 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. Промежутки времени между фразами "finish EB + commit" и "finish counts" - это время, когда выполнялась "другая активность", т.е. подсчет строк из большого источника данных (да еще два раза, для верности :)). В аттаче - причёсанный лог опроса мониторинга. В котором русским по белому видно, что поток GC... ничего не делал (строки выделены жёлтым цветом). Вообще. И поток CW, кстати - тоже. ЧЯДНТ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 14:09 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovdimitrбудет update-in-place Может, записи, выбранные select с with lock, ещё и в undo log добавляются?А как же ты переписывал тот самый undo log, если задаёшь такие вопросы ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:03 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидПроверил. НЕ работает фоновый сборщик. Или, может, не должен работать - не знаю.Для SELECT WITH LOCK - не работает, согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:06 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
hvladТаблоидПроверил. НЕ работает фоновый сборщик. Или, может, не должен работать - не знаю.Для SELECT WITH LOCK - не работает, согласен.А должен ли был вообще ? PS. Я проверю для update t set id=id, отпишусь тогда. PPS. И еще тут бНОПНЯ: если в SS работает один аттач-молотилка, а в двух других потоках - GC & CW, то должна ли их активность отображаться в виде ненулевой загрузки разных cpu-ядер сервера ? Ибо я тут понаблюдал в top'e, и увидел загрузку только одного ядра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:13 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
hvladА как же ты переписывал тот самый undo log, если задаёшь такие вопросы ??? Во-первых, я его не переписывал, а только причёсывал. Во-вторых, только нижний уровень, непосредственно работу самого лога, всё дерево вызовов и высокоуровневой логики я не прослеживал. Если бы я наткнулся на его заполнение при select, то пошёл бы в девел и резонно задал вопрос "а назачем", поскольку backout "тяжелее" чем expunge. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:18 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovя его не переписывал, а только причёсывал.0xFF. ты "тот самый" патчик по нынешним сырцам вышлешь, или чё там ? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:23 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидhvladДля SELECT WITH LOCK - не работает, согласен.А должен ли был вообще ?Сходу - не вижу противопоказаний. Таблоидесли в SS работает один аттач-молотилка, а в двух других потоках - GC & CW, то должна ли их активность отображаться в виде ненулевой загрузки разных cpu-ядер сервера ?Да, но только если эти потоки действительно грузят CPU, а не IO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:25 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Таблоид0xFF. ты "тот самый" патчик по нынешним сырцам вышлешь, или чё там ? ;-) Вышлю когда подрихтую под позднейшие изменения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:27 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВо-первых, я его не переписывал, а только причёсывал.Речь о том, что ты должен бы быть в состоянии посмотреть ответ в коде, а не задавать такие вопросы Dimitry SibiryakovЕсли бы я наткнулся на его заполнение при select, то пошёл бы в девел и резонно задал вопрос "а назачем", поскольку backout "тяжелее" чем expunge.Ну так возрадуйся, ибо любое создание версии протоколируется в анду-логе. Ответ на свой "а назачем" найди сам, он на поверхности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:29 |
|
||
|
select ID from <T> for update with lock into :V - создает ли версию записи ?
|
|||
|---|---|---|---|
|
#18+
hvladтолько если эти потоки действительно грузят CPU , а не IO.А чем они могут грузить ЦПУ, если всё, что они делают, это операции с базой ? Вот если я буду делать в бесконечной тоске что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:34 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38709184&tid=1563418]: |
0ms |
get settings: |
6ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 475ms |

| 0 / 0 |
