Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Кака в чем, я пришел, когда проекту было 14 лет, он был написан через жопу с кучей курсоров и отсутствием внешних ключей, а тема оптимизации запросов вызывала ухмылку. Так вот, по немногу начал ломать систему и ныть по поводу курсоров, отсутствию ключей и тд. Но ща образовалась жопа, есть таблица (Clients), с относительно небольшим количеством записей (400к) при ,примерно,100-150 полях, там всего 8 внешних ключей. При этом на саму таблицу ссылаются еще 50 таблиц. Ерунда в том, что сейчас удаление вновь созданной записи занимает минуту и 50 секунд. И ща весь отдел по немногу начинает опять забивать на внешние ключи, ссылаясь на эту ситуацию. У меня есть только 1 вариант удаления при таком раскладе, это собирать все таблицы, которые зависят от Clients проверять есть ли там удаляемая запись через exists, и если нет, отключать ограничения, удалять и включать. Но это, как по мне, тупой костыль. Мы даже пробовали отключать триггер, но результат тот же. Что можно сделать в этой ситуации? ПС ms sql 2016 enterprise ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 11:44 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Обычно такое бывает, если на связанной таблице отсутствует индекс, поэтому, для поиска значений при удалении используется скан. Я бы посмотрел на план удаления строки - кто именно дает медленное выполнение, и сделал соответствующий индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 11:53 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
therПри этом на саму таблицу ссылаются еще 50 таблицА у этих таблиц индексы по ссылке есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 11:59 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
У каждой таблицы кластерный индекс, но вряд ли кто то создавал еще индекс на внешний ключ. План во вложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 12:20 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Оказалось, что 147 таблиц ссылаются на Client ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 12:21 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
therно вряд ли кто то создавал еще индекс на внешний ключtherОказалось, что 147 таблиц ссылаются на ClientВот и получили полные сканы этих таблиц при удалении строки из родительской. Вдобавок еще удаляются строки из индексированных представлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 12:53 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Если с индексами понятно, хотя стремно ща делать 147 индексов, как бы место не закончилось на винте. То как быть с удалением при наличии индексируемой вьюхи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 13:10 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
therЕсли с индексами понятно, хотя стремно ща делать 147 индексов, как бы место не закончилось на винте. То как быть с удалением при наличии индексируемой вьюхи? может для начала посмотреть на 4 которые рекомендует Query Processor, а не 147 : Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 13:17 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
therЕсли с индексами понятно, хотя стремно ща делать 147 индексов, как бы место не закончилось на винте. То как быть с удалением при наличии индексируемой вьюхи? Если она индексируемая, то логично, что и индекс на ней тоже можно сделать, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 13:17 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
ther, добавить поле "удалено" , и при удаление не удалять а ставить признак в это поле. в клиенте таких не отражать удалять (с этим признаком) потихоньку ночами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 13:29 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
therЕсли с индексами понятно, хотя стремно ща делать 147 индексов, как бы место не закончилось на винте. То как быть с удалением при наличии индексируемой вьюхи? 1. Не всё так плохо, на паре таблиц есть индексы на внешний ключ, осталось только на 145 проиндексировать. 2. Есть ещё 3 таблицы-кучи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 13:37 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Minamoto, это понятно, я думал, что надо будет доп манипуляции с вьюхой, кроме индекса архивариус пасиб, пробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 14:06 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
ther, Вам эти 150 таблиц не нужны, сначала гляньте на те немногие из них, что обеспечиваю основную часть задержек. Ну и пользовательское удаление записей из справочника само по себе выглядит довольно дико. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2019, 19:03 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
"удаление вновь созданной записи " 1.Я правильно понимаю, что подразумевается полное отсутствие указаний на данную запись в других таблицах. или всё же есть вероятность появления связанных записей? 2. Зачем делать физическое удаление? Пометьте запись как "для удаления" и обработайте процедуру физического удаления в любое удобное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2019, 09:43 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
982183и обработайте процедуру физического удаления в любое удобное время.Так всё равно будет расход ресурсов на скан этих 170 таблиц. Разумнее сделать индексы на тех таблицах, где много записей. Или, действительно, подумать о ненужности физического удаления (в т.ч. через вьюху, если нельзя поменять программу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2019, 11:27 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Ну так в "пакетном" виде всё это можно запустить гораздо оптимальней. Сформировать список ID для удаления, разделить его на те, на которые есть ссылки и те по которым нет. первые на анализ, вторые на физическое удаление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2019, 12:06 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
982183Ну так в "пакетном" виде всё это можно запустить гораздо оптимальней. Сформировать список ID для удаления, разделить его на те, на которые есть ссылки и те по которым нет. первые на анализ, вторые на физическое удаление.Да, это само собой. И вообще, можно же запускать физическое удаление редко. Если создавать инедксы не хочется, ибо интенсивные вставки, и будет оверхед, то вполне себе решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2019, 12:21 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
А у вас еще и декларативная ссылочная целостность, небось, включена? У каждой декларативной связи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 08:38 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
uaggsterА у вас еще и декларативная ссылочная целостность, небось, включена? У каждой декларативной связи...Да, это и есть вопрос топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 08:52 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Имелось ввиду - поддержание декларативной ссылочной целостности - ака каскадное обновление/удаление /заNULLение дочерних записей. Сама по себе бекларативная ссылочная целостность - не так страшна. А вот каскадные операции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 12:23 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
uaggsterИмелось ввиду - поддержание декларативной ссылочной целостности - ака каскадное обновление/удаление /заNULLение дочерних записей. Сама по себе бекларативная ссылочная целостность - не так страшна. А вот каскадные операции... что с каскадом, что без, если "147 таблиц ссылаются на Client" и индексов нет, 147 сканов будут все равно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 13:14 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Yasha123uaggsterИмелось ввиду - поддержание декларативной ссылочной целостности - ака каскадное обновление/удаление /заNULLение дочерних записей. Сама по себе бекларативная ссылочная целостность - не так страшна. А вот каскадные операции... что с каскадом, что без, если "147 таблиц ссылаются на Client" и индексов нет, 147 сканов будут все равно +100500 Индексов нужно значительно меньше, из этих 147 таблиц почти все маленькие. Критик дал рецепт: КритикВам эти 150 таблиц не нужны, сначала гляньте на те немногие из них, что обеспечиваю основную часть задержек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 13:59 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
alexeyvguaggsterА у вас еще и декларативная ссылочная целостность, небось, включена? У каждой декларативной связи...Да, это и есть вопрос топика. А я так понял, что он сам проверяет наличие связанных записей в зависимых таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 14:07 |
|
||
|
Внимание боян. Долгое удаление записи из таблицы.
|
|||
|---|---|---|---|
|
#18+
Yasha123uaggsterИмелось ввиду - поддержание декларативной ссылочной целостности - ака каскадное обновление/удаление /заNULLение дочерних записей. Сама по себе бекларативная ссылочная целостность - не так страшна. А вот каскадные операции... что с каскадом, что без, если "147 таблиц ссылаются на Client" и индексов нет, 147 сканов будут все равно Будут. Но с блокировками - попроще будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2019, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=85&tid=1687136]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 404ms |

| 0 / 0 |
