Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Добрый день. Таблицы в скрипте: --Следующий запрос выполняется 20сек если еспользуется order by Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. План запроса и статистика : Код: 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. добавление составного индекса по TB_NUMBER,TB_DATE ситуацию не меняет, без сортировки выполняется быстро. Этот запрос формируется динамически поэтому менять его нельзя. Настройки сервера стандартные, изменяли только число открытых объектов и индексов по 5000. Что можно поменять в настройках сервера, какие параметры крутить? Глава по производительность и тюнинг БД уже прочитана несколько раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2005, 15:02 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Очень много всего написано, потому скажу эмпирически (может и не в тему)... Создание таблиц и индексов и заполнение их данными должно производиться в разных запросах (процедурах), иначе оптимизатор "не заметит" индекса. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 08:55 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
В следующий раз будь любезен класть такие длинные листинги в виде вложения. Это я тебе как мадыратыр прошу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 10:45 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Вот скрипт по созданию таблиц и индексов : ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 11:34 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Сделай пожалуйста следующее : Код: plaintext 1. 2. 3. 4. Но уже и сейчас видно, что ORDER BY тут совершенно ни при чем. Потому что тормозит вычитание, т.е. часть Код: plaintext 1. 2. 3. видно из следующего : FROM TABLE TAKING_BLOOD_DOSE Nested iteration. Table Scan. Forward scan. Positioning at start of table. ... NESTING LEVEL 1 SUBQUERIES FOR STATEMENT 1. QUERY PLAN FOR SUBQUERY 1 (at nesting level 1 and at line 1). Correlated Subquery. Subquery under an IN predicate. STEP 1 The type of query is SELECT. Evaluate Ungrouped ANY AGGREGATE. FROM TABLE DOSE_MOVEMENT EXISTS TABLE : nested iteration. Index : FK_DM_TBD Forward scan. Positioning at index start. Index contains all needed columns. Base table will not be read. Using I/O Size 2 Kbytes for index leaf pages. With LRU Buffer Replacement Strategy for index leaf pages. END OF QUERY PLAN FOR SUBQUERY 1. Т.е. причины плохой работы след: -- при выборке из основной таблицы не используются критерии поиска -- при выполнении вычитания (подзапрос) не используется позиционирование по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 11:46 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
MasterZivСделай пожалуйста следующее : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. Нельзя запрос изменить - он генериться динамически и в след. раз могут быть добавлены другие условия. Я думаю что у меня не настроен сервер, кеши и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 12:05 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
MasterZiv Но уже и сейчас видно, что ORDER BY тут совершенно ни при чем. Потому что тормозит вычитание, т.е. часть Код: plaintext 1. 2. 3. Если я выкидывал вычитание то запрос быстрее на 2 сек, если выбрасываю order то запрос мгновенно выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 12:39 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
a set forceplan on в начале и at isolation read uncomitted в конце запроса не пробовали ставить? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 12:51 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Litusa set forceplan on в начале и at isolation read uncomitted в конце запроса не пробовали ставить? Posted via ActualForum NNTP Server 1.1 А - все повисло совсем, пришлось сервер рестартовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 13:29 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
я написал по-дурацки. "а" - это предлог был. Прошу прощения. set forceplan on select ... at isolation read uncommitted вот так вот. Без "а" Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 14:17 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Litusя написал по-дурацки. "а" - это предлог был. Прошу прощения. set forceplan on select ... at isolation read uncommitted вот так вот. Без "а" Posted via ActualForum NNTP Server 1.1 Я все правильно понял :) , но запрос вешает базу (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 14:26 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
:-) Только сейчас заметил: хорошее название TAKING_BLOOD_DOSE Очень странно звучит, что запрос вешает сервер до такой степени, что его приходится перегружать. :-( ИМХО время выполнения отчета - весьма капризная вещь. У нас тоже запросы в разное время суток могут выполняться по-разному. И определить, почему так происходит - весьма сложная задача (для меня по крайней мере). причиной тому - огромное количество факторов, влиящих на это самое время. Состояние кэша, текущая загрузка сервера, текущие размеры таблиц, участвующих в запросе - все это влияет на время выполнения. Особенно сложно становится, когда на сервере выполняются одновременно и OLTP (оперативные), и OLAP (аналитические) задачи. Найти точную причину долгого выполнения запроса гораздо сложнее, чем устранить ее. В подобных случах я пытаюсь модифицировать запрос, меняя порядок следования условий (смеяться не надо - помогает), указав явно индексы для таблицы и анализируя, чем в данный момент занят сервер, есть-ли блокировки и т.д. А может order by действительно занимает 20 секунд? В результирующем запросе сколько записей получается? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 15:34 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
Litus:-) Только сейчас заметил: хорошее название TAKING_BLOOD_DOSE А может order by действительно занимает 20 секунд? В результирующем запросе сколько записей получается? Posted via ActualForum NNTP Server 1.1 на сервере сейчас никто не работает кроме меня (( в результате получаем 50000 записей. TAKING_BLOOD - кроводача TAKING_BLOOD_DOSE - доза крови :) которую берут у донора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 15:56 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
...в результате получаем 50000 записей. Поясните плз., что вы хотите сделать с 50000 записей?!? На клиента потащите? Естественно серверу приходится писать эти 50000 в некую область, где потом сортировать. Это занимает некоторое время. Я бы посмотрел на целесообразность такой большой выборки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 16:45 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
DrNullПоясните плз., что вы хотите сделать с 50000 записей?!? На клиента потащите? Естественно серверу приходится писать эти 50000 в некую область, где потом сортировать. Это занимает некоторое время. Я бы посмотрел на целесообразность такой большой выборки... компонент сервера приложений sybase jaguar запоминает эти индексы, и потом следующий запрос берет предположим 50 идентификаторов, по ним находит доп. характеристики и возвращает клиенту. Таким образом работает подсистема генерации списков. Далее клиент нажимает кнопку "след. блок" и смотрит следующую порцию данных. Я с вами соглашусь клиенту не нужны 50000 записей одновременно. DrNullЕстественно серверу приходится писать эти 50000 в некую область, где потом сортировать. Это занимает некоторое время. Я бы посмотрел на целесообразность такой большой выборки... А нельзя ли узнать где эта область и увеличить ее размер? Это не tempdb? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2005, 17:11 |
|
||
|
ASE 12.5 Тормозит сортировка
|
|||
|---|---|---|---|
|
#18+
L_Leonid компонент сервера приложений sybase jaguar запоминает эти индексы, и потом следующий запрос берет предположим 50 идентификаторов, по ним находит доп. характеристики и возвращает клиенту. Таким образом работает подсистема генерации списков. Далее клиент нажимает кнопку "след. блок" и смотрит следующую порцию данных. Я с вами соглашусь клиенту не нужны 50000 записей одновременно. Зачем здесь сортировка? Чтобы набрать 50 первых TBD_ID? Или последних? :) Если все равно берется 50 TBD_ID... не поискать ли возможность и запрашивать 50? К примеру зажавшись по TB_DATE... Кроме того select distinct намекает, что TBD_ID могут быть не уникальными? Если это не так - они уникальны... я бы убрал distinct... L_Leonid А нельзя ли узнать где эта область и увеличить ее размер? Это не tempdb? Вероятнее всего tempdb. Увеличение размера вряд ли поможет - математика сортировки никуда от этого не денется, быстрее перелопачивать (выкидывать дубликаты+сортировать) 50К записей не будет. Необходимо на мой взгляд пересмотреть задачу и/или структуру БД (схему реляций), чтобы уменьшить размер выборки и/или уйти от сортировки с distinct... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2005, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33008624&tid=2013709]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 448ms |

| 0 / 0 |
