Chapter 3. Implementing the Physical Database
Terms you'll need to understand:
Techniques you'll need to master:
This chapter deals with the physical components of a SQL Server database system. Beginning with the server hardware, organizing the data storage and creating the physical files is where a lot of future performance will be determined. There are many options to consider for a production environment, and one thing is certain: The minimum installation requirements will not be sufficient. The computer hardware
Although we tend to think of the physical realm as things that we can touch and feel, within a DBMS environment it also defines the components of the database itself. The database layout, the key structures, constraints, and other software elements are all
In any physical design, the goal is to provide an efficient and
In moving from an idea to a logical structure to the actual physical elements, you must remember to consider elements that contribute to performance, reliability, and data integrity. Having a model of the system is one thing, but it must be able to meet the demands of an environment in which inevitably the system must meet the intended goals of the company and add to the bottom line.
In a book of this nature, trying to fit all topics into the fray in a logical manner can sometimes be
A Hardware Dialogue
In a production environment, budget is going to limit some of the hardware decisions being made. Often, new hardware isn't even
Let's start with something that may be found on the Administration exam, though less likely seen within the design topics. These are the minimum requirements as specified by Microsoft:
Now if I were to walk into an office and see this system as my production machine, I would likely immediately
Depending on the load, you want to see a multiple processor system for your database server. One processor is fine with a low-end server, if it is 1GHz or above, but two processors are better and four or more processors are preferred. SQL Server is designed to work best in a symmetric multiprocessor environment.
Given the price of RAM in today's business environment, it doesn't make any sense to skimp in order to lower costs. Put as much RAM into the machine as the hardware and budget can handle. Increasing the memory of a server is the most
The disk system is also very important. For a strong server you should use a minimum of 5 drives. A 3-drive RAID array would be used to store data, and the other 2 drives would mirror each other and store the operating system and application programs. The more drives you can add into the array, the better the performance and the larger the capacity available to store data. This peaks out at about 10
RAID (redundant array of independent/inexpensive disks) is a technology in which two or more disk drives can be configured in such a manner as to provide the following:
Even though software implementations of RAID must be known to pass certification exams, and will be found in production systems, they are not nearly regarded as reliable as hardware RAID. For any high-volume, mission-critical application, it is therefore preferred to set up data redundancy mechanisms at the hardware level.
A gigabit backbone should be configured for the network around the server. It is even worth considering multiple network cards connected to the server to increase the bandwidth available to the machine.
If you are looking on the very high end, then two sets of small RAID arrays of three drives, each on two separate controllers, can provide some additional performance gain and flexibility with data and index placement. It is also often recommended that the log files be kept separated from the data so as to improve performance and reduce disk
Defining a SQL Server Database
A database is similar to a work file folder, which contains information pertaining to related topics. In the same way, a database is a group of files used to store data pertaining to a single business process. Databases are organized with fields, records, and tables. A field is a single characteristic, attribute, or property that provides information about an object. A record is a complete set of all the fields combined together for a particular object. A table is a
SQL Server is a relational database management system. A relational database contained within SQL Server is a collection of objects in which data and other information are stored in multiple tables. The
Because we have just
It is also worth considering the separation of indexes because some performance gains can be realized if the indexes are stored on a drive other than the one on which the data is stored. This is done through the use of filegroups. When the index is created on a different filegroup, each group can make use of different physical drives and their own controllers. Data and index information can then be read in parallel by multiple disk heads.
In an ideal configuration (somewhat tongue in cheek), you might want to separate the operating system from its page file. You would then place the log onto its one drive, separate from the data, with the data configured over a RAID volume as described in the following section. You'd then take the seldom-used data (column or table data) and separate it from data that will be accessed more frequently. After placing the indexes off on their own volume as well, for about $150,000$200,000 you would have the optimum performance in a database server.
Remember that the DBMS will rely heavily on the file system. The file format in SQL Server 2000 has not significantly changed from the previous version (SQL Server 7). SQL Server uses a set of files to store the data, indexes, and log information for a database. A primary file also has some header information in it, providing SQL Server with necessary information about a database. Each database has a minimum of two files associated with it, one for the data and a second for the log. It is also possible to create multiple files for each of these purposes as described in the following paragraphs. File placement, and object placement within these files, plays an important role in the responsiveness of SQL Server. A database consists of two or more files with each file used for only a single database. A single file cannot be shared by multiple databases.