Мы только что купили программный продукт под названием dynaTrace для этого. Для этого он использует инструментарий байт-кода (в нашем случае MSIL, поскольку мы используем .Net, но также и Java). В основном это инструменты вокруг методов, которые мы выбираем, и различные методы каркаса для определения времени, которое требуется для выполнения каждого метода.
Что касается вызовов базы данных, он отслеживает каждый сделанный вызов (через ADO.Net) и параметры в вызове, а также время выполнения. Затем вы можете перейти от вызова к базе данных и пройти путь выполнения, который программа взяла, чтобы туда попасть. Он покажет каждый вызов метода (который вы установили) в пути. Это довольно круто.
Вы можете использовать это несколькими различными способами, но обычно это будет использоваться в каком-то сценарии нагрузочного тестирования с другим продуктом, обеспечивающим нагрузку через различные пути вашей системы. Затем вы получаете список ваших вызовов БД под нагрузкой и можете посмотреть их.
Вы также можете оценить не только выполнение одного вызова, но и их количество, чтобы предотвратить гибель тысячи сокращений.