Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
День добрый, 2 Xeon 2.4 G, 2 Gb оперативки, сказя 10 rpm, linux, ASE 12.5.1, размер страници 4k, табличка 35 - 40 млн записей, вот нормальным по времени сколько будет считаться ( пусть даже приблизительно ) удаление из той таблички 350 - 400 тыс строк ? Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 12:09 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
Это от запроса вообще-то зависит. Так не скажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 21:55 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто от запроса вообще-то зависит. Так не скажешь. просто Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 09:38 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
и еще в продолжение delete... тот запрос блокирует таблицу полностью, если верить `Руководству по настройке производительности` один из способов избежать этого создать индекс. Я правильно понял что в этом конкретном случае это будет индекс по колонке `moment` ? Как я уже говорил в данном запрсе в транзакции удаляется примерно 350 - 400 тыс строк, стоит ли копать в сторону уменьшения транзакции ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 10:13 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
блин сначала написал, потом подумал и проверил.... sp__helpindex говорит что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. тоесть индекс вроде есть, а таблица блокируется ексклюзивно... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 10:20 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
g613 Код: plaintext 1. Далено не все так просто Какие @FROM и @TO , сколько таких записей в таблице, какая сама таблица, какая схема блокировки, какие в ней индексы, триггера .... Не, не могу сказать даже примерно. Да на самом деле и не за чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 22:25 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
g613тот запрос блокирует таблицу полностью, если верить `Руководству по настройке производительности` один из способов избежать этого создать индекс. Я правильно понял что в этом конкретном случае это будет индекс по колонке `moment` ? Ну это как бы неоднозначно все. Вы хотите избежать сканирования всей таблицы , чтобы типа таблица не блокировалась монопольно при удалении. Но блокировка всей таблицы и способ доступа к таблице не связаны , или скажем так, не совсем связаны. А чтобы не блокировалась монопольно таблица, надо настраивать эскалацию блокировок и/или схему блокирования таблицы. Или уменьшать размер транзакции. g613 Как я уже говорил в данном запрсе в транзакции удаляется примерно 350 - 400 тыс строк, стоит ли копать в сторону уменьшения транзакции ? Смотря с какой целью копать. Если в сторону ускорения удаления копать , то не стоит. А если в сторону неблокирования таблицы - стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 22:31 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
g613sp__helpindex говорит что: Вы пользуетесь sp__helpindex. А вы уверены, что он подходит к вашей версии ASE ? ПРосто если ASE новый, а sp__helpindex старый , то он может писать фигню всякую. Про кластерные индексы ( что их нет ), и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 22:34 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZiv g613sp__helpindex говорит что: Вы пользуетесь sp__helpindex. А вы уверены, что он подходит к вашей версии ASE ? ПРосто если ASE новый, а sp__helpindex старый , то он может писать фигню всякую. Про кластерные индексы ( что их нет ), и т.п. ну да, я уже ходил по граблям sp_helpindex vs sp__helpindex в ASE 12.5... :) во в эом конкретном месте разница как раз в том что индекс ' Traffic.Traffic_84452701112 Y ID' d ltqcndbntkmyjcnb rkfcnthysq... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 16:43 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZiv g613 Код: plaintext 1. Далено не все так просто Какие @FROM и @TO , сколько таких записей в таблице, какая сама таблица, какая схема блокировки, какие в ней индексы, триггера .... moment: datetime, разница @from и @to от суток ( сутки ~ 400 тыс строк ): datetime ( есть не кластерный индекс ), схема блокировки: data row, тригер только на insert, индексы показывал.... .... Не, не могу сказать даже примерно. Да на самом деле и не за чем. у меня оно отрабатывает ~ за 2 - 3 часа ( и просто хотелось узнать нормально ли это... ), в связи с чем выбиралось время в течении суток/дня недели когда запускать такие запросы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 16:51 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZiv g613тот запрос блокирует таблицу полностью, если верить `Руководству по настройке производительности` один из способов избежать этого создать индекс. Я правильно понял что в этом конкретном случае это будет индекс по колонке `moment` ? Ну это как бы неоднозначно все. Вы хотите избежать сканирования всей таблицы , чтобы типа таблица не блокировалась монопольно при удалении. Но блокировка всей таблицы и способ доступа к таблице не связаны , или скажем так, не совсем связаны. А чтобы не блокировалась монопольно таблица, надо настраивать эскалацию блокировок и/или схему блокирования таблицы. Или уменьшать размер транзакции. Схема блокировки как уже говорил datarow. Эскалация где вообще настраивается ? У меня вот подозрение что это sp_configure "lock promotion". если это оно то при описываемы мною размерах ( 400 тыс строк ) там должны быть такие же офигенно большие цифры ( просто 200 которые по умолчанию как то не вяжутся с сотнями тысяч... ) ? g613 Как я уже говорил в данном запрсе в транзакции удаляется примерно 350 - 400 тыс строк, стоит ли копать в сторону уменьшения транзакции ? Смотря с какой целью копать. Если в сторону ускорения удаления копать , то не стоит. А если в сторону неблокирования таблицы - стоит. Вообще время за которое подчистятся устаревшие данные не столь актуально, хочется уйти от блокирования таблицы и вообще максимально сократить время блокировок.... Тоесть вот первое что щас видится это сократить числа 350 - 400 тыс до 35 - 40 тыс за раз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:01 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
g613 ну да, я уже ходил по граблям sp_helpindex vs sp__helpindex в ASE 12.5... :) Да просто выкинте их на фиг, их основное назначение - форматировать вывод чтобы он влезал в экран шириной в 80 символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 22:21 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
g613 moment: datetime, разница @from и @to от суток ( сутки ~ 400 тыс строк ): datetime ( есть не кластерный индекс ), схема блокировки: data rows, тригер только на insert, индексы показывал.... .... у меня оно отрабатывает ~ за 2 - 3 часа ( и просто хотелось узнать нормально ли это... ), в связи с чем выбиралось время в течении суток/дня недели когда запускать такие запросы.... Ну дальше -- план запроса давайте. Используется ли этот индекс там или нет. Как там значения в moment распределяются. Индексов у вас многовато. Но таблица DOL, это поинтереснее. Но все равно конечно не так долго должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 22:33 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
Схема блокировки как уже говорил datarow. Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел. Эскалация где вообще настраивается ? У меня вот подозрение что это sp_configure "lock promotion". Да-да. Только они настраиваются отдельно для APL и DOL. В вашем случае sp_configure "row lock promotion". Но еще можно настраивать и на уровне таблицы, смотрите sp_objattribute или как ее там. Ну sp_help на таблицу сделайте , там они будут болтаться (атрибуты). Пороги задаются в виде "нижний порог" "процент" "верхний порог". Вообще время за которое подчистятся устаревшие данные не столь актуально, хочется уйти от блокирования таблицы и вообще максимально сократить время блокировок.... Тоесть вот первое что щас видится это сократить числа 350 - 400 тыс до 35 - 40 тыс за раз... Ну я не думаю, что это обязательно. Можно и не снижать, только добиться , чтобы таблица не блокировалась. Почитайте про пороги, если не поймете - спрашивайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 22:43 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivСхема блокировки как уже говорил datarow. Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел. Эскалация где вообще настраивается ? У меня вот подозрение что это sp_configure "lock promotion". я думаю, что эта проца поможет настроить ;) sp_setpglockpromote или на уровне сервера (sp_configure): верхняя граница page lock promotion HWM row lock promotion HWM нижняя граница page lock promotion LWM row lock promotion LWM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2005, 11:25 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivСхема блокировки как уже говорил datarow. Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел. Эскалация где вообще настраивается ? У меня вот подозрение что это sp_configure "lock promotion". Да-да. Только они настраиваются отдельно для APL и DOL. В вашем случае sp_configure "row lock promotion". Но еще можно настраивать и на уровне таблицы, смотрите sp_objattribute или как ее там. Ну sp_help на таблицу сделайте , там они будут болтаться (атрибуты). Пороги задаются в виде "нижний порог" "процент" "верхний порог". Вообще время за которое подчистятся устаревшие данные не столь актуально, хочется уйти от блокирования таблицы и вообще максимально сократить время блокировок.... Тоесть вот первое что щас видится это сократить числа 350 - 400 тыс до 35 - 40 тыс за раз... Ну я не думаю, что это обязательно. Можно и не снижать, только добиться , чтобы таблица не блокировалась. Почитайте про пороги, если не поймете - спрашивайте. с блокировкой вроде разобрался ( sp_setrowlockpromote 'table', Traffic, 500000, 500000, 100; ) план запроса [1336] billing.bill_2.1> set showplan on; [1337] billing.bill_2.1> dbcc traceon(302); QUERY PLAN FOR STATEMENT 1 (at line 1). STEP 1 The type of query is DBCC. DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role. [1338] billing.bill_2.1> delete from traffic where moment between "07/09/2005" and "07/09/2005 14:00"; QUERY PLAN FOR STATEMENT 1 (at line 1). STEP 1 The type of query is DELETE. The update mode is direct. FROM TABLE traffic Nested iteration. Index : TrafficFKMoment Forward scan. Positioning by key. Keys are: Moment ASC Using I/O Size 16 Kbytes for index leaf pages. With LRU Buffer Replacement Strategy for index leaf pages. Using I/O Size 16 Kbytes for data pages. With LRU Buffer Replacement Strategy for data pages. TO TABLE traffic Using I/O Size 4 Kbytes for data pages. (147668 rows affected) период был несколько укорочен, отработал за 13 минут, я вот подозреваю что некоторые тормоза были из за фрагментации ( в эти выходные reorg rebuild отработал ). я вот несколько не понял смысл фразы "Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел." Конкретно про 10 записей. Это про то что я говорил - уменьшить размер транзакции ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2005, 11:36 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
с блокировкой вроде разобрался sp_setrowlockpromote 'table', Traffic, 500000, 500000, 100; 500000, 5000000, 50 было бы лучше. А то так слишком жестко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 21:53 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
План нормальный, индекс используется. Только IO здесь вот : g613 Using I/O Size 16 Kbytes for index leaf pages. With LRU Buffer Replacement Strategy for index leaf pages. Using I/O Size 16 Kbytes for data pages. With LRU Buffer Replacement Strategy for data pages. TO TABLE traffic большое очень, если будете удалять по немногу. Ну и даже если не понемгогу, то Using I/O Size 16 Kbytes for data pages странновато выглядит - некластерный же индекс. Зачем читать 16к ? Не понятно. Но надо смотреть на попадание в кэш. g613я вот несколько не понял смысл фразы "Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел." Конкретно про 10 записей. Это про то что я говорил - уменьшить размер транзакции ? Да, про уменьшить. Но нужно это скорее не для разведения одновременных транзакций, потому как у вас datarows, а для уменьшения нагрузки на сервер по работе с логом и по выделению блокировок. Кстати, не забудьте убедиться в итоге, что вам будет хватать блокировок, в вашем случае одна удаляемая запись внутри одной транзакции - одна блокировка. Ну и чтобы другим еще хватало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 22:30 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivс блокировкой вроде разобрался sp_setrowlockpromote 'table', Traffic, 500000, 500000, 100; 500000, 5000000 , 50 было бы лучше. А то так слишком жестко. если это не опечатка, то боюсь у меня не будет 'лишних' 400 с хвостиком метров на поддержку такого количества блокировок... А вот про 50 процентов - я если чесно не совсем понял, если можно задать верхний и нижний пороги, то какой глубинный смысл задавать еще и проценты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 22:44 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivПлан нормальный, индекс используется. Только IO здесь вот : g613 Using I/O Size 16 Kbytes for index leaf pages. With LRU Buffer Replacement Strategy for index leaf pages. Using I/O Size 16 Kbytes for data pages. With LRU Buffer Replacement Strategy for data pages. TO TABLE traffic большое очень, если будете удалять по немногу. Ну и даже если не понемгогу, то Using I/O Size 16 Kbytes for data pages странновато выглядит - некластерный же индекс. Зачем читать 16к ? Не понятно. Но надо смотреть на попадание в кэш. хз, может от того что этот самый Moment не очень сильно 'размазан', то есть нет того, что сегодня данные добавляли с Moment = '10/17/2005' а вчера с Moment = '10/18/2005'.... g613я вот несколько не понял смысл фразы "Ну так если у вас datarows , то вы вообще все можете в ONLine удалять, одновременно с работой других пользователей. Например, по 10 записей. Только надо естественно оттьюнить запрос, чтобы он по индексу шел." Конкретно про 10 записей. Это про то что я говорил - уменьшить размер транзакции ? Да, про уменьшить. Но нужно это скорее не для разведения одновременных транзакций, потому как у вас datarows, а для уменьшения нагрузки на сервер по работе с логом и по выделению блокировок. в общем предполагается что этот запрос будет отрабатываться когда сервер не сильно загружен, я вот щас выделил для себя отрезок в 3 часа, пока оно укладывается, если разбить на более мелкие транзакции я боюсь что оно не уложится и сумарная загрузка будет ни чуть не меньше. Кстати, не забудьте убедиться в итоге, что вам будет хватать блокировок, в вашем случае одна удаляемая запись внутри одной транзакции - одна блокировка. Ну и чтобы другим еще хватало. да, у меня number of lock 1_000_000 - 128 метров памяти откушало... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 23:06 |
|
||
|
Примерное время запроса
|
|||
|---|---|---|---|
|
#18+
если это не опечатка, то боюсь у меня не будет 'лишних' 400 с хвостиком метров на поддержку такого количества блокировок... Ну я же не знаю сколько у вас там памяти под локи. ну это уж вы сами смотрите. А вот про 50 процентов - я если чесно не совсем понял, если можно задать верхний и нижний пороги, то какой глубинный смысл задавать еще и проценты... Нижний порог задает значение, до которого эскалации точно не будет. Верхний порог задает значение , после которого эскалация точно наступит. Процент задает процент от объема таблицы, при заблокировании которого эскалация точно наступит. Обычно задают Tlow < Percent < Thigh -- я вам про это и хотел сказать. 5миллионов - это конечно просто с потолка цифра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 10:02 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33332220&tid=2013319]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 447ms |

| 0 / 0 |
