
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
246
|
Chapter 8: Database Security
Starting with MySQL 4.0.3, many variables can be changed at runtime without
restarting the server. See http://dev.mysql.com/doc/mysql/en/Dynamic_System_
Variables.html.
Database Operation
Now that you’ve installed a reasonably secure version of the server in a reasonably
secure location, let’s look at how to run the thing securely.
MySQL Table Types
Many new developers of MySQL-backed web sites have been horrified to watch their
database fall over and sink into the swamp just as their site becomes popular.
Although MySQL has a reputation for speed, this is primarily in cases where data-
base reads greatly outnumber writes. Once the number of simultaneous writes
crosses some threshold, performance degrades most ungracefully.
This is a self-inflicted Denial of Service by the implementation of the default MySQL
table type: MyISAM. It locks the whole table with each write (INSERT, UPDATE, or
DELETE), pushing back all other requests. It’s like closing all check-in lines but one
at a busy airport terminal. Waits lengthen until the administrator must kill database
threads or restart the database server.
MySQL actually has multiple table types, each implementing a different storage
mechanism and behavior. You’ll usually deal with two: MyISAM and InnoDB.
MyISAM