I am tasked with creating a new central database, with an all-new ERD / data schema, to replace a poorly designed database used by a range of applications.
To assist with both design and capacity planning, I want to profile all the read/write activity of the existing SQL Server database (preferably in production) over the space of a day or a month. In particular I want:
1. An identifier of the application which initiated the read or write. That strategy is already discussed in this post , thus it is the next two points I mostly need help with.
2. A report of what "read-oriented" queries/sprocs where executed, in what frequency distribution, and approximately what amount of data was extracted (in KB or MB) for each query. This desired report presumably would focus on "query hashes" for ad hoc queries, given that raw app/user queries are typically converted to an optimal form (and assigned a query hash) before being executed.
3. A report of what "write-oriented" actions were taken (DML or sprocs), along with frequency distribution and data quantities, as before.
As stated, I've already found a reasonable-ish answer to #1 above. So it is mostly #2 and #3 that I need.
Incidentally, I am interested in answers that include network tooling that can help answer these questions. In other words, if SQL Server is deficient at answering these questions, perhaps a network monitor can sleuth the answers? I also would be curious if other, related cloud databases have a solution(s) for these questions. For example, perhaps this is easier to answer if I'm instead using Azure SQL or Cosmos DB?
Asked by Brent Arias
(191 rep)
Oct 26, 2022, 02:27 PM
Last activity: Oct 26, 2022, 05:36 PM
Last activity: Oct 26, 2022, 05:36 PM