Speeding up a Slow Website Part 2 – SQL Server
Following up on the previous article – speeding up a legacy website – this posting shows how we tackled the SQL database portion of the optimization.
Any developer can create a database. Most developers can create a relational database and some developers can normalize and optimize a database. However very few developers can design a database that will perform effectively over years and as transactional volume increase. Initially a poor design is not apparent due to the lack of traffic and companies marvel at how quick and easy the process was. As traffic increases, the database can become a bottleneck and site slowness and other problems start to appear. Companies typically respond to this by asking developers to optimize queries or by throwing in more powerful servers, memory and updating the operating systems and database software. This however only masks the problem for the short term.
ROI to Replace a Legacy System
In many cases, the ROI to rebuild the database just isn’t there. A brand new database design can be costly, require a much longer deployment and outages. The database is the central piece and will usually require changes in internal and other systems and processes, requiring changes for both consumers and users.
Recently a large e-commerce company came to us with a challenge. The client had a 16 year old website running a classic ASP website on Microsoft SQL Server that was terribly slow. They asked us to identify quick and easy ways to make it faster. Their 80 person development teams had already tried optimizing the processes and identified the database as the culprit. They even built an extensive caching mechanism that generated HTML files multiple times per week. In spite of the efforts, the e-commerce processes were still extremely slow with average page load times of 30 or more seconds. With their busiest shopping season of the year approaching they needed results quickly. The client requested a complete review with a recommendations presentation within two weeks.
We approached the problem by looking at the code and the database. The fundamental issue was that the developers had tried to put as little stress as possible on the database and that resulted in a less than optimal design. In this post, I will highlight the suggestions we made for the database, and will also include a link to our detailed Recommendations-SQL-Server-Database-Optimization with all company information redacted.
The short-term solutions focused on the following:
- Incorrect indexing strategy
- Incorrect or missing clustered indexes
- Too many reads
- Incorrect TempDB design
- Irrelevant or unnecessary data being returned
- Inefficient and poorly written SQL Server queries.
- Incorrect SQL Server settings.
In every case, there were improvements that could have been made.
Medium to long-term solutions were to point out:
- Re-design sections of the database
- Remove SQL Queries embedded in code
- Modify the process of database changes
- Add senior database engineer(s)
Download our recommendation here:
Vimware strives to be your most trusted technology resource. We work with you to understand your business demands and goals, then align them with the right technology strategy and solutions. We help you improve your digital footprint by carefully managing every detail throughout the Product Life Cycle.