5
MySQL Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
5.1
Optimisation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
5.1.1
MySQL Design Limitations/Tradeos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
5.1.2
Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
5.1.3
What Have We Used MySQL For? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
5.1.4
The MySQL Benchmark Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336
5.1.5
Using Your Own Benchmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
5.2
Optimising SELECTs and Other Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
5.2.1
EXPLAIN Syntax (Get Information About a SELECT). . . . . . . . . . . . . . . . . . . . . . .338
5.2.2
Estimating Query Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
5.2.3
Speed of SELECT Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
5.2.4
How MySQL Optimises WHERE Clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
5.2.5
How MySQL Optimises DISTINCT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
5.2.6
How MySQL Optimises LEFT JOIN and RIGHT JOIN . . . . . . . . . . . . . . . . . . . . . 346
5.2.7
How MySQL Optimises ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.2.8
How MySQL Optimises LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348
5.2.9
Speed of INSERT Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
5.2.10
Speed of UPDATE Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
5.2.11
Speed of DELETE Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
5.2.12
Other Optimisation Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5.3
Locking Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
5.3.1
How MySQL Locks Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
5.3.2
Table Locking Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.4
Optimising Database Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
5.4.1
Design Choices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
5.4.2
Get Your Data as Small as Possible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
5.4.3
How MySQL Uses Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.4.4
Column Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.4.5
Multiple-Column Indexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.4.6
Why So Many Open tables? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.4.7
How MySQL Opens and Closes Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.4.8
Drawbacks to Creating Large Numbers of Tables in the Same Database . . 362
5.5
Optimising the MySQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
5.5.1
System/Compile Time and Startup Parameter Tuning . . . . . . . . . . . . . . . . . . . .363
5.5.2
Tuning Server Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.5.3
How Compiling and Linking Aects the Speed of MySQL . . . . . . . . . . . . . . . . . . 365
5.5.4
How MySQL Uses Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
5.5.5
How MySQL uses DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
5.5.6
SET Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
5.6
Disk Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
5.6.1
Using Symbolic Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
5.6.1.1
Using Symbolic Links for Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
5.6.1.2
Using Symbolic Links for Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .374
Chapter_1
|
Chapter_2
|
Chapter_3
|
Chapter_4
|
Chapter_5
|
Chapter_6
|
Chapter_7
|
Chapter_8
|
Chapter_9
Return to Table of Contents
.com
.net
.org
Web Hosting Services
UNIX WEB HOSTING
SUPPORT & FAQ's
TERMS OF USE
Domain Services
DOMAIN REGISTRATION
MANAGE YOUR ACCOUNT
SUPPORT & FAQ's
TERMS OF USE
SITE MAP
Home
Hosting Plans
|
Domain Registration
|
About Us
|
Contact Us
|
Site Map
Terms of Use
|
Privacy Policy
|
Guarantees
Merchant Accounts
SpiritHost - web hosting for spiritual and education sites
SpiritHit.com - Religious and Spiritual Portal
Copyright © 2002
Dyntex
Group
, Inc. All Rights Reserved
Return to Table of Contents
Back to top