In SQL Server, database growth events occur when a database file reaches its maximum allocated size, triggering an automatic expansion to accommodate additional data. These growth events are needed for maintaining sufficient space but can also lead to performance issues if not properly managed.
Configuring a good database growth event size in SQL Server is crucial to avoiding fragmentation, resource contention, and other performance-related issues. Below, I’ll show you how to set database growth sizes in SQL Server and share tips along the way!
Setting Growth Event Size in SQL Server
You can configure the growth increments for database files in SQL Server using the ALTER DATABASE statement or through the database properties interface. It’s important to choose appropriate sizes to balance performance, disk usage, and potential fragmentation.
Here’s an example of how to set growth event size for your data and log files:
ALTER DATABASE MyDatabase MODIFY FILE ( NAME = 'MyDatabase_Data', FILEGROWTH = 100MB -- or specify growth in percentage );
To do this from within SQL Server Management Studio (SSMS),you can right-click the database and select Properties (Files tab) to see the following:

Properly managing these growth settings is critical to maintaining performance and avoiding issues like fragmentation and resource contention. More explained below…
Managing Growth Sizes for Data and Log Files
Log Files:
Log file growth must be carefully controlled to avoid fragmentation of Virtual Log Files (VLFs). VLF fragmentation can slow down database recovery, backups, and general operations. To minimize this risk, consider using larger, fixed-size increments for log files. Avoid using small, percentage-based growth for log files, as this could lead to an excessive number of VLFs.
Data Files:
Data file growth doesn’t face the same challenges as log files, but poor configuration can still lead to problems. If the growth increments are too small, frequent growth events will occur, increasing fragmentation and placing unnecessary load on the system. Conversely, excessively large increments can cause delays in file expansion or unplanned disk space usage, particularly in Temp DB files.
Should You Use Percent Growth?
Using percent-based growth may appear attractive since it scales with the size of the database. However, for large databases, it often leads to performance issues because growth events based on percentages can be too large and cause significant delays in growth operations.
Although enabling Instant File Initialization can reduce the delay during data file growth (note: this does not apply to log files), relying solely on percentage growth is generally not recommended. Instead, many DBAs opt for fixed-size growth increments to achieve more predictable performance.
Best Practices for Configuring Growth Increments
To effectively manage database growth, track your database’s growth patterns over time using monitoring tools. This helps you set the right growth increments, preventing frequent auto-growth events and avoiding performance issues or disk space shortages. By staying on top of growth trends, you can make proactive adjustments for smoother expansions.
While a dedicated monitoring solution simplifies this process, any data visualization tool, like Power BI, can also be used to track disk space usage. Below is an example of a Power BI report I created for SQL Server’s disk space which also represents the free space precent within each database:

🔎Monitoring Free Space Within Databases: SQL Server
For better monitoring, track data growth over time, include collection intervals, and schedule data collection through SQL Agent.
As a rule of thumb, I aim for around 10% free space. If I see that, I know everything is on track.
I hope this post was a useful one for you. Managing database growth events is crucial for avoiding issues in SQL Server. By configuring appropriate growth increments, monitoring growth patterns, and scheduling regular checks, you can ensure your SQL Server runs smoothly!
As a follow-up, you should check out my other post which contains a SQL script that will show all database growth events since your last service restart: SQL Server Script: Get Database Growth Events
Leave a Reply