Не толкова отдавна дадох урок за Explain Plan на нашия персонал по разработка на приложения. Един въпрос, който се появи, беше как да реша кои SQL изрази се нуждаят от настройка? Използвам няколко различни подхода и намирам кандидати за настройка на SQL от различни ъгли.
- Рутинно извършвам прегледи на код на SQL изрази, които попаднат в нашата база данни. Използвам опита си, за да разгледам бързо SQL изявление, което е ново или е значително променено, за да реша дали трябва да проуча SQL допълнително. Например, ако заявка в таблица търси в колона PK или Unique, тогава мога да съм сигурен, че ще работи бързо. Ако SQL изявлението ми изглежда подозрително, ще го изпълня през Explain Plan и/или време на изявлението, за да гарантирам, че работи достатъчно.
- Имам Enterprise Manager на Oracle да ме предупреди за спорове за ресурси в нашата система за тестова база данни. Всички SQL изрази, които съм пропуснал по време на прегледа на кода, понякога могат да бъдат намерени тук. Ако получа предупреждение за спорове за ресурси, ще скоча и ще видя дали един или два SQL израза причиняват проблем. Това е последният ми шанс да хвана SQL изрази, преди да са влезли в производството.
- Използвам Ignite за Oracle. Този продукт е от Confio, но Confio вече е част от Solarwinds. Обикновено не включвам продукти на доставчика, но ще направя изключение в този случай. Нещото, което харесвам в Ignite, е, че ми изпращам имейл с отчет всеки понеделник. Докладът съдържа първите N нарушители въз основа на времето за изчакване. Отнема ми секунди, за да разгледам този доклад. Търся големите ленти в репортажа. В примерната екранна снимка по-долу можете да видите синя лента, която веднага привлича вниманието ви. Числото вдясно е стойност на идентификатор и ако щракнете върху него, можете да получите SQL текста. Това е чудесен начин за идентифициране на SQL изрази, които се нуждаят от настройка. Това е супер бързо и супер лесно.
Както можете да видите, аз се опитвам да намеря проблематичен SQL, докато се разработват, когато са в нашата тестова система и дори след като са достигнали производството.