|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
По работе пользуемся firebrid 2.1 Имеем набор баз данных, в которых есть хранимые процедуры. Сейчас у нас встал вопрос о переходе на вышедший недавно firebird 3.0 Перебэкапил базы данных из 2.1 в 3.0 с помощью gbak и стал тестировать скорость выполнения процедур. Тестировал их через ibexpert, сделав ibeblock, который выполняет набор процедур 1000 раз и считает количество тиков между ними, по ним вычисляя скорость работы. Заметил, что в firebird 3.0 ни одна из процедур не стала работать быстрее, а скорость некоторых так и вовсе упала раза в полтора. Подумав, что дело может быть в ibexpert, решил перепроверить всё, написав простеньшую программу на .net с подключенным FirebirdSql.Data.FirebirdClient версии 4.6.2.0, которая так же выполняла введённый запрос 1000 раз, делая rollback после каждого выполнения. Средние цифры для приложенного дальше запроса в вижуал студии: fb21 ~ 54 мс fb30 ~ 108 мс Интересно, что в патчноутах писали про оптимизацию и ускорение работы, а на деле я столкнулся с обратным. Приведенные ниже таблицы: Файл schema.png поясняет связи таблиц. Таблица test3 имеет порядка 1500 записей Таблица test1 имеет порядка 1500 записей Таблица test2 имеет порядка 160000 записей Сразу огромная просьба - не критиковать, что таблицы не связаны внешними ключами, нет генераторов (получение айдишника завязано на max(id)) и есть другие неточности в логике/оптимизации запроса. Я примерно представляю, что это всё можно переделать по-человечески, вопрос сейчас именно в том, почему именно эти конструкции стали работать дольше. Коротко о сути работы: Процедура SP_SAVE_TEST3 либо вставляет новую запись test3, либо возвращает id существующей, если находит уже сущестующую запись по сравнению поля varchar Последний блок (который как раз и запускается 1000 раз для тестов) по задаваемым переменным сначала получает айдишник test3 (через процедуру SP_SAVE_TEST3), далее по цепочке айдишник test2 и в конце делает вставку в test1. Очень надеюсь, что кто-нибудь пояснит мне, с чем связано такое проседание по скорости. Если это важно, то у меня intel core i3-4170, 8гб оперативы, windows 8.1 professional Фаирберд 2.1 и 3.0 32 битный Код: plsql 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.
Надеюсь на вашу помощь и разъяснение. При необходимости докину какие-нибудь дополнительные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:00 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
Версии серверов 2.1.6.18547 3.0.0.32483 Классик сервера, 32 битные ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:16 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
mativil, не внимательно читал где и что оптимизировано. 1. Увеличение скорости можно заметить лишь на многопользовательском доступе, также значительно улучшены свип, сборка мусора, инкрементный бекап. В одном потоке будет примерно на 20% медленнее. 2. В 3.0.0 найдена регресия в индексах. Рекомендую попробовать текущий снапшот. 3. Ты ничего не сказал в о конфигурации и используемой архитектуре. Надеюсь ты не сравнивал сладкое с кислым (CS vs SS). 4. Оптимизатор в 3.0 был изменён. По отдельным запросам внутри ХП надо сравнивать планы. На самом деле в ряде случаев лучше, но иногда может серьёзно промахиваться. 5. В 3.0 есть множество нововведений SQL, переписав ваши запросы/ХП с их использованием можно добится значительного увеличения производительности. 6. Другие регресии связанные с быстродействием сейчас изучаются и скорее всего к 3.0.1 будут исправлены. Что в прочем как всегда вспомните 2.5.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:20 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
mativil, В 3.0 на многопользовательском доступе классик сливает суперу конкретно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:25 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
Симонов ДенисРекомендую попробовать текущий снапшот.+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:27 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
hvladСимонов ДенисРекомендую попробовать текущий снапшот.+1 Я так понимаю совет по поводу снепшота 4.0? Потому как CORE-5302 не бекпортирована. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:41 |
|
Снижение скорости работы на fb3.0 после fb 2.1
|
|||
---|---|---|---|
#18+
afgmhvladпропущено... +1 Я так понимаю совет по поводу снепшота 4.0? Потому как CORE-5302 не бекпортирована.Гм, да, совсем про это забыл. Жду подтверждения от Таблоида, что этот патч не сломал CORE-4914. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:48 |
|
|
start [/forum/topic.php?fid=40&fpage=57&tid=1562073]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 295ms |
total: | 428ms |
0 / 0 |