Hello all, Please advise location of the toc.
Kind reagrds Emmanuel > -----Original Message----- > From: Jeremy Zawodny [mailto:[EMAIL PROTECTED]] > Sent: 10 January 2002 16:59 > To: Rick Emery > Cc: '[EMAIL PROTECTED]' > Subject: Re: Jeremy's MySQL Book > > > On Thu, Jan 10, 2002 at 08:32:03AM -0600, Rick Emery wrote: > > Jeremy, > > > > Late last year, you were creating the Table of Contents for a book > > about MySQL...how's it coming? I know that many on this list were > > anxious to get a sneak peak, and perhaps suggest additional topics, > > such as advantages and conditions for using INNODB and BDB tables > > versus MYISAM. And how to install, configure and use MySQL ODBC > > drivers. Perhaps even how to access MS Access databases through > > MySQL. > > Hi Rick, > > I'll more information about the book on the web site I'm setting up > for it (advanced-mysql.com). The domain is being registered today, so > it'll be up over the weekend. > > In the meantime, here's the last TOC outline I had put together. > Comments are welcome, of course. > > ---snip--- > > Title: Advanced MySQL (tentative) > > Chapter 0: Introduction > > Goals of this book > * explain how mysql works "under the hood" > * understand why it is fast what can slow it down (at all levels) > * discuss real-world problems and solutions > * expose good practices for use in large or demanding environments > * discuss MySQL's weaknesses and how to work around them > > What you need to know (and why) > * basic sql > * mysql installation and administration > * a scripting language (such as perl or python) > > What you won't read about (and why) > * programming languages > * the mysql api > * extending or embedding mysql > * clustering > * commercial load-balancing solutions (there's a book on that) > > Chapter Overview > > Chapter 1: Configuration Basics (see Questions below) > > my.cnf, MySQL's Configuration File > > MySQL's Startup Options > > SHOW VARIABLES and SHOW STATUS > > Chapter 2: MySQL's Table Types (or Handlers?) > > MySQL's Modular Architecture > * core services > - sql parser > - functions > - logging > * table handlers > - data access > - functionality differences > * design benefits > > Locking and Concurrency > * table vs. page vs. block vs. row (granularity) > * read vs. write (exclusivity) > * multi-versioning > > Transactional vs Non-Transactional > * acid features > - atomicity > - consistency > - isolation > - durability > * tradeoffs > - concurrency > - performance > * simulating transactions with table locks (maybe a sidebar?) > * isolation levels > > The Table Handlers > * MyISAM (compressed MyISAM, and MERGE too) > * HEAP > * BDB (Berkeley DB) > * InnoDB > * Gemini > * (possibly include a table which summarizes the features of all?) > > Selecting the Right Table Type > > Chapter 3: Indexes > > What are Indexes? > * unique / non-unique indexes > * unique non-indexes (in 4.x according to monty) > * primary keys > * partial indexes > * compound (multi-part) indexes > * packed keys > > How MySQL Stores and Maintains Indexes > * storage requirements > * common prefixes and space compression > * where indexes are stored (for each table type) > * hash indexes on heap tables > * the myisam key buffer and innodb/gemini buffer pools > * performance impact: updates vs. reads > - discuss delayed key writes for myisam > > When Does MySQL Use an Index? > * the most specific index > * exact matches > * ranges > * the 40% rule > * left-most prefixes > * finding unused indexes > * order by and group by queries > * distinct queries > * queries using only indexed columns > > When MySQL Never Uses and Index > * regular expressions > * wildcard prefix matches > > Understanding and Maintaining Your Indexes > * Index File Sizes > * SHOW KEYS > * Cardinality > * ANALYZE TABLE > * Index Performance Counters > * Index Buffers > > Full-text Indexing > > Chapter 4: Making Queries Fast > > How MySQL Processes Queries > * query cache (new in 4.0 tree) > * parsing > * optimization & planning > * execution > > Identifying Slow Queries > * the slow query log > * using mysqldumpslow > * using explain_log (new in 4.0) > > Using and Understanding EXPLAIN > * single table select with index > * single table select with no index > * multi-way joins > > Influencing MySQL's Choices > * straight joins > * index hints in queries > * analyze tables for better statistics > * query hints > - SQL_BIG_RESULT > - SQL_SMALL_RESULT > - SQL_BUFFER_RESULT > * avoiding the query cache (from monty) > > Built-in Optimizations > * the 40% rule > * index only selects > * table-specific > - innodb primary keys > - gemini indexes > * others (must ask monty & others what to include) > * distinct and order by > * join order optimizations (from monty) > > Chapter 5: Application Design and Performance > > Factors Affecting Application Performance > * database design (normalization) > * fast/slow queries (and index usage) > * language choice > * table types: locking/concurrency > * server performance problems (see chapter 7) > > Normalization and Good Design > * what is a good design (refer to chapter in other book) > * why normalization helps > * when to de-normalize for the sake of performance > - fixed and variable row sizes > - dealing with blob data > * living with a poor design > > Choosing the Right Language > * compiled vs. scripting > * data conversion overhead (hashes, arrays) > * prepared queries > > Choosing the Right Table Type > * what do you really need? > * mixing and matching > * general recommendations > > Using Transactions for Increased Performance > > Data Partitioning > > Misc Tips and Tricks (need to re-org this) > * compressed tables > * delayed key writes > * application-level caching > * temporary and heap tables > * networking and connectivity > * heap tables > * delayed and low priority inserts > * bulk inserts (new in 4.0) > * re-creating indexes via alter table or load data > * (whatever else doesn't fit elsewhere?) > > Chapter 6: Server Performance > > Factors Affecting Server Performance > * available memory > * dedicated or shared > * os choice > * filesystem type and layout > * disks and io > * cpu speed > * network setup > > Hardware Often isn't the Solution > > How MySQL Uses Memory > * Global Memory > * Per-Thread Memory > > Tunable Parameters > put list here of the common ones, discuss each. refer to the > appendix for the rest (monty has some in mind after the 4.0.2 > release) > > Filesystem Choices > * journaling? (reiserfs, ext3, jfs, xfs, veritas, soft updates) > * raw partitions > * directory sizes > * running mysql over nfs > > To RAID or not to RAID? > * depends on the workload > * data vs. logs > * software or hardware? > * raid 0, 1, 0+1, 5 (similar to IMAP book discussion) > > Chapter 7: Benchmarking and Analysis > > Why Benchmark? > > What to Watch > * Server > - memory > - cpu > - disk and network i/o > - swapping > > * MySQL > - SHOW STATUS > - key cache > - slow queries > - table scans > - open/closed tables > > * Application > - latency > - overall performance > > Tools > * mysql-super-smack > * mysqlbench > * mysqlbinlog > * mytop > * fork_big.pl > > Scenarios > * General Benchmarking > - checks overall settings > - determine which table type is faster > * Single-User vs. Multi-User > * Stress Testing > - how do things scale? > - what breaks first > - what to change? > * Application Testing > - real users vs. simulation > * Border Cases and "Hot Spots" > > Chapter 8: Replication > > What is replication? > > When is it useful? > * Load Balancing (sort of) > * Data Distribution > * Backups > * High(er) Availability > - other options > - lvs, shared scsi, etc. > > What isn't it useful? > * Solving update performance problems > * Real-time, high performance needs > - replication is async. > - latency is highly variable > * (more in the "Known Problems" section) > > How does it work? > * On the Master > - binary log > - server-id > - filtering > - SHOW MASTER STATUS > * On the Slave > - master.info > - connect to master, wait for updates > - server-id > - filtering > - SHOW SLAVE STATUS > * Master Elections (in version 4.x) > > Replication Architectures > * Single Master/One or More Slaves > * Tree > * Two-master > * Multi-master > > Monitoring Replication > * Using a Heartbeat > * Watching Logs > > Switching Masters > > Maintenance > * Log rotation and purging > * Snapshots > * Fixing Problems > > Related Tools > * mysqlsnapshot > * mysqlbinlog > * mysqlmanager (in version 4.x) > > Known Problems > * single threaded / slow query bottleneck > * silent death > * lack of read-ahead on slaves > * filtering is client side > * single log on the master > * master.info confusion > * multi-master isn't ready > > Future Enhancements > * multi-master > * read-ahead on the slaves > * failsafe replication > * master elections > > Chapter 9: Multi-Daemon Setups > * Many "Virtual" MySQL Servers > * Sharing the same Data Directory > > Chapter 10: Maintenance and Upgrades > > Automating Maintenance > * Optimizing Tables > * Checking Tables for Errors > * Log Rotation > - error and query logs > - binary logs > > Why Upgrade? > * Minor Upgrades > * Major Upgrades > Before Upgrading > * Reading the Changelog > * Testing > * Backups > Upgrade Methods > * Server Only > * Server and Data > * Minimizing Down-Time with Symlinks > > Chapter 11: Backup and Recovery > > Selecting a Backup Strategy > * Frequency > * Automation > * Trade-offs (space/recovery speed, etc) > * (pull important bits from the other book for here) > > Backup Issues > * Consistency > * On-line or Off-line > * Table Types > - MyISAM > - HEAP > - BDB > - InnoDB > - Gemini > * Replication > * Filesystem Snapshots (Veritas, NetApp, LVM) > > Tools > * mysqldump > * mysqlhotcopy > * mysqlsnapshot > > Recovery > > Chapter 12: Security > > Managing accounts > * How the Privilege System Works > * Granting Only Necessary Privileges > > OS Permissions > * Using MySQL Account > * Configuration Files > * Data Files and Logs > > Encrypting Connections > * SSL support (in version 4.x) > - certificate installation > - other certificate issues > * Tunneling with SSH > * Tunneling STunnel > > Encrypting Data > * Filesystem-Based Encryption > * Encrypting Fields > * Hashing > > chroot()ed MySQL > * Why chroot? > * Setting Up the Jail > * Configuring and Building MySQL > > Appendix A: MySQL Server Variables > > List and describe the various variables that can be adjusted for > MySQL. Make recommendations. Possibly contribute this back to > the MySQL manual. > > Appendix B: MySQL Benchmark Results > > List the detailed results from the benchmarks used elsewhere in > the book. > > Appendix C: MySQL Tools > > If necessary, describe some of the tools used in the book. I > don't know if this is necessary or not, but it can't hurt to plan > for right now. > > Questions > --------- > > 1. Monty suggested that I include a few pages of "refresher" material. > It's stuff that folks ought to know already but may not. So I'm > not sure where to include it quite yet. I've added a short > "Chapter 1.5" (between 1 and 2) which contains the material for > now. > > 2. How to cover "common problems" in a way that folks can find them > without reading the whole book? Maybe this is just an indexing > issue. An item that Monty brought up is MySQL's non-graceful way > of handles running out of disk space. That'll come up somewhere, > but where would someone expect to find it? Should there be a list > of things that every MySQL DBA needs to know? Maybe a short list > that says "read chapter XX to learn more about this topic" and > "read chapter YY to learn more about that topic"? > > 3. Chapter 9 needs a better name. And a bit more thought. (Those > aren't questions, exactly.) But I'm partly waiting to see what the > group attempting this at Yahoo finds out. Is it okay to leave it > slightly up in the air at this point? > > > Notes > ----- > > 1. Each chapter will lead off with a paragraph or two (or more) about > what the chapter covers, what someone will learn from it, and so > on. > > ---snip--- > > Jeremy > -- > Jeremy D. Zawodny, <[EMAIL PROTECTED]> > Technical Yahoo - Yahoo Finance > Desk: (408) 349-7878 Fax: (408) 349-5454 Cell: (408) 685-5936 > > MySQL 3.23.41-max: up 7 days, processed 190,145,153 queries (288/sec. avg) > > --------------------------------------------------------------------- > Before posting, please check: > http://www.mysql.com/manual.php (the manual) > http://lists.mysql.com/ (the list archive) > > To request this thread, e-mail <[EMAIL PROTECTED]> > To unsubscribe, e-mail > <[EMAIL PROTECTED]> > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php > --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php