Muutke küpsiste eelistusi

E-raamat: Expert MySQL

Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 86,44 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Expert MySQL is the leading reference for learning, understanding, and extending the MySQL server. It unlocks the full promise of open source by showing how to modify the code, create your own storage engine, build your own authentication plugins, and even add your own functions and commands to the SQL language. No other book provides the level of detail or the extensive examples of the inner workings of MySQL that have taken engineers years to master. Expert MySQL is a must have book for all systems integrators, engineers, and software developers working with the MySQL server code.





Expert MySQL is also a wealth of information on key aspects of MySQL internals. Youll learn about internal query representation, how the optimizer creates execution plans, and how to exert control over those plans for optimal performance in your environment. You'll even learn to build your own query optimizer, giving insight that can help you understand and resolve tough performance problems. High-availability and replication are also covered, making Expert MySQL a must-have book for anyone doing high-end work involving MySQL.







Shows how to customize MySQL and its storage and authentication engines Provides in-depth knowledge of internals for use in query tuning and performance troubleshooting Covers high-end features such as high-availability and replication
About the Author xix
About the Technical Reviewers xxi
Acknowledgments xxiii
Introduction xxv
Part 1 Getting Started with MySQL Development
1(150)
Chapter 1 MySQL and The Open Source Revolution
3(20)
What Is Open Source Software?
4(1)
Why Use Open Source Software?
5(3)
Is Open Source Really a Threat to Commercial Software?
8(1)
Legal Issues and the GNU Manifesto
9(2)
Let the Revolution Continue!
11(1)
Developing with MySQL
12(2)
Why Modify MySQL?
14(1)
What Can You Modify in MySQL? Are There Limits?
15(1)
MySQL's Dual License
16(2)
So, Can You Modify MySQL or Not?
18(1)
Guidelines for Modifying MySQL
18(1)
A Real-World Example: TiVo
19(4)
Summary
20(3)
Chapter 2 The Anatomy of a Database System
23(34)
Types of Database Systems
23(1)
Object-Oriented Database Systems
23(1)
Object-Relational Database Systems
24(1)
Relational Database Systems
25(2)
Relational Database System Architecture
27(1)
Client Applications
27(2)
Query Interface
29(1)
Query Processing
30(2)
Query Optimizer
32(2)
Internal Representation of Queries
34(1)
Query Execution
35(1)
File Access
36(2)
Query Results
38(1)
Relational Database Architecture Summary
38(1)
The MySQL Database System
38(1)
MySQL System Architecture
39(2)
SQL Interface
41(1)
Parser
41(1)
Query Optimizer
42(1)
Query Execution
43(1)
Query Cache
43(3)
Cache and Buffers
46(3)
File Access via Pluggable Storage Engines
49(8)
Summary
56(1)
Chapter 3 A Tour of the MySQL Source Code
57(60)
Getting Started
57(1)
Understanding the Licensing Options
57(1)
Getting the Source Code
58(1)
The MySQL Source Code
59(1)
Getting Started
60(2)
The mysql_main() Function
62(2)
Handling Connections and Creating Threads
64(7)
Parsing the Query
71(8)
Preparing the Query for Optimization
79(4)
Optimizing the Query
83(5)
Executing the Query
88(3)
Supporting Libraries
91(1)
Important Classes and Structures
92(7)
MySQL Plugins
99(3)
Coding Guidelines
102(1)
General Guidelines
102(1)
Documentation
102(2)
Functions and Parameters
104(1)
Naming Conventions
105(1)
Spacing and Indenting
105(1)
Documentation Utilities
106(2)
Keeping an Engineering Logbook
108(1)
Tracking Your Changes
109(2)
Building the System for the First Time
111(6)
Summary
115(2)
Chapter 4 Test-Driven MySQL Development
117(34)
Background
117(1)
Why Test?
117(3)
Benchmarking
120(2)
Profiling
122(1)
Introducing Software Testing
123(1)
Functional Testing vs. Defect Testing
123(4)
MySQL Testing
127(1)
Using the MySQL Test Suite
128(8)
MySQL Benchmarking
136(7)
MySQL Profiling
143(8)
Summary
149(2)
Part 2 Extending MySQL
151(302)
Chapter 5 Debugging
153(42)
Debugging Explained
153(1)
The origins of debugging
154(1)
Debugging Techniques
154(1)
Basic Process
154(2)
Approaches to Debugging
156(1)
Inline Debugging Statements
156(3)
Error Handlers
159(2)
External Debuggers
161(1)
Stand-alone Debuggers
161(3)
Interactive Debuggers
164(2)
GNU Data Display Debugger
166(2)
Bidirectional Debuggers
168(2)
Debugging MySQL
170(1)
Inline Debugging Statements
170(8)
Error Handlers
178(1)
Debugging in Linux
179(1)
Using gdb
179(4)
Using ddd
183(6)
Debugging in Windows
189(6)
Summary
193(2)
Chapter 6 Embedded MySQL
195(56)
Building Embedded Applications
195(1)
What Is an Embedded System?
195(1)
Types of Embedded Systems
196(1)
Embedded Database Systems
196(1)
Embedding MySQL
197(1)
Methods of Embedding MySQL
198(1)
Bundled Server Embedding
198(1)
Deep Embedding (libmysqld)
198(1)
Resource Requirements
198(1)
Security Concerns
199(1)
Advantages of MySQL Embedding
199(1)
Limitations of MySQL Embedding
199(1)
The MySQL C API
200(1)
Getting Started
200(1)
Most Commonly Used Functions
201(1)
Creating an Embedded Server
202(1)
Initializing the Server
203(1)
Setting Options
204(1)
Connecting to the Server
205(1)
Running Queries
206(1)
Retrieving Results
206(1)
Cleanup
207(1)
Disconnecting from and Finalizing the Server
208(1)
Putting It All Together
208(1)
Error Handling
209(1)
Building Embedded MySQL Applications
210(1)
Compiling the Library (libmysqld)
210(1)
Compiling libmysqld on Linux
210(1)
Compiling libmysqld on Windows
210(1)
What About Debugging?
211(2)
What About the Data?
213(1)
Creating a Basic Embedded Server
213(1)
Linux Example
213(4)
Windows Example
217(6)
What About Error Handling?
223(1)
Embedded Server Application
224(1)
The Interface
224(3)
The Data and Database
227(1)
Creating the Project
228(2)
Design
230(1)
Managed vs. unmanaged code
230(1)
Database Engine Class
230(8)
Customer Interface (Main Form)
238(6)
Administration Interface (Administration Form)
244(3)
Detecting Interface Requests
247(1)
Compiling and Running
247(4)
Summary
249(2)
Chapter 7 Adding Functions and Commands to MySQL
251(30)
Adding User-Defined Functions
251(1)
Create Function Syntax
252(1)
Drop Function Syntax
252(1)
Creating a User-Defined Library
252(5)
Adding a New User-Defined Function
257(5)
Adding Native Functions
262(4)
Compiling and Testing the New Native Function
266(1)
Adding SQL Commands
267(8)
Adding to the Information Schema
275(6)
Summary
280(1)
Chapter 8 Extending MySQL High Availability
281(58)
What is Replication?
281(1)
Why use Replication?
282(1)
How Does Replication Achieve High Availability?
283(1)
Basic Replication Setup
284(1)
Requirements for Replication
284(2)
Configuring the Master
286(2)
Configuring the Slave
288(1)
Connecting the Slave to the Master
288(2)
Next Steps
290(1)
The Binary Log
290(1)
Row Formats
291(1)
The mysqlbinlog Client
291(2)
Show Binlog Events Command
293(3)
Additional Resources
296(1)
Replication Architecture
296(1)
A Brief Tour of the Replication Source Code
297(1)
Replication Source Code Files
297(2)
Log Events Explained
299(6)
Types of Log Events
305(2)
Execution of Log Events
307(3)
Extending Replication
310(1)
Global Slave Stop Command
311(11)
Slave Connect Logging
322(17)
Summary
338(1)
Chapter 9 Developing MySQL Plugins
339(30)
MySQL Plugins Explained
339(1)
Types of Plugins
339(1)
Using MySQL Plugins
340(4)
The MySQL Plugin API
344(3)
Compiling MySQL Plugins
347(1)
The RFID Authentication Plugin
348(1)
Concept of Operations
349(1)
RFID Module
349(6)
Architecture of Authentication Plugins
355(2)
Building the RFID Authentication Plugin
357(8)
RFID Authentication in Action
365(2)
Further Work
367(2)
Summary
368(1)
Chapter 10 Building Your Own Storage Engine
369(84)
MySQL Storage Engine Overview
369(2)
Storage Engine Development Process
371(1)
Source Files Needed
372(1)
Unexpected Help
372(1)
The Handlerton
372(3)
The Handler Class
375(4)
A Brief Tour of a MySQL Storage Engine
379(1)
The Spartan Storage Engine
380(1)
Low-Level I/O Classes
380(1)
The Spartan_data Class
381(8)
The Spartan_index Class
389(14)
Getting Started
403(2)
Stage 1: Stubbing the Engine
405(1)
Creating the Spartan Plugin Source Files
405(1)
Adding the CMakeLists.txt File
406(1)
Compiling the Spartan Engine
407(1)
Testing Stage 1 of the Spartan Engine
407(4)
Stage 2: Working with Tables
411(1)
Updating the Spartan Source Files
412(1)
Updating the Class File
413(3)
Testing Stage 2 of the Spartan Engine
416(1)
Stage 3: Reading and Writing Data
417(1)
Updating the Spartan Source Files
417(4)
Testing Stage 3 of the Spartan Engine
421(1)
Stage 4: Updating and Deleting Data
422(1)
Updating the Spartan Source Files
423(1)
Testing Stage 4 of the Spartan Engine
424(5)
Stage 5: Indexing the Data
429(1)
Updating the Spartan Source Files
430(12)
Testing Stage 5 of the Spartan Engine
442(6)
Stage 6: Adding Transaction Support
448(5)
Summary
452(1)
Part 3 Advanced Database Internals
453(148)
Chapter 11 Database System Internals
455(10)
Query Execution
455(1)
MySQL Query Execution Revisited
455(1)
What Is a Compiled Query?
456(1)
Exploring MySQL Internals
457(1)
Getting Started Using MySQL for Experiments
457(2)
Limitations and Concerns
459(1)
The Database System Internals Experiment
460(1)
Why an Experiment?
460(1)
Overview of the Experiment Project
460(1)
Components of the Experiment Project
461(2)
Conducting the Experiments
463(2)
Summary
463(2)
Chapter 12 Internal Query Representation
465(30)
The Query Tree
465(2)
What Is a Theta-Join?
467(1)
Query Transformation
467(1)
DBXP Query Tree
468(2)
Implementing DBXP Query Trees in MySQL
470(1)
Files Added and Changed
470(1)
Creating the Tests
471(1)
Stubbing the DBXP_Select Command
472(7)
Adding the Query Tree Class
479(8)
Showing Details of the Query Tree
487(8)
Summary
494(1)
Chapter 13 Query Optimization
495(48)
Types of Query Optimizers
495(1)
Cost-Based Optimizers
496(2)
Heuristic Optimizers
498(1)
Semantic Optimizers
498(1)
Parametric Optimizers
499(1)
Heuristic Optimization Revisited
499(1)
The DBXP Query Optimizer
500(1)
Stubbing the DBXP Select Command
501(2)
Important MySQL Structures and Classes
503(1)
Table Structure
503(1)
The Field Class
504(1)
Iterators
505(1)
The DBXP Helper Classes
506(2)
Modifications to the Existing Code
508(6)
Details of the Heuristic Optimizer
514(24)
Compiling and Testing the Code
538(5)
Summary
541(2)
Chapter 14 Query Execution
543(58)
Query Execution Revisited
543(1)
Project
543(1)
Restrict
544(1)
Join
544(1)
Inner Join
545(3)
Outer Join
548(2)
Left Outer Join
550(1)
Right Outer Join
550(1)
Full Outer Join
551(1)
Cross-Product
552(1)
Union
553(2)
Intersect
555(1)
DBXP Query Execution
556(1)
Designing the Tests
557(1)
Updating the DBXP Select Command
558(2)
The DBXP Algorithms
560(1)
Project
560(1)
Restrict
561(1)
Join
562(10)
Other Methods
572(1)
The get_next() Method
572(4)
The send_data() Method
576(2)
The check_rewind() Method
578(3)
Compiling and Testing the Code
581(6)
Summary
584(3)
Appendix
587(1)
Bibliography
587(1)
Database Theory
587(1)
General
588(1)
MySQL
588(1)
Open Source
588(1)
Websites
588(1)
Sample Database
589(6)
Chapter Exercise Notes
595(1)
Chapter 12
595(1)
Chapter 13
596(1)
Chapter 14
597(4)
Index 601
Charles Bell conducts research in emerging technologies. He is a member of the Oracle MySQL Development team and is the team lead for the MySQL Utilities team. He lives in a small town in rural Virginia with his loving wife. He received his Doctor of Philosophy in Engineering from Virginia Commonwealth University in 2005. Dr. Bell is an expert in the database field and has extensive knowledge and experience in software development and systems engineering. His research interests include 3D printers, microcontrollers, three-dimensional printing, database systems, software engineering, and sensor networks. He spends his limited free time as a practicing Maker focusing on microcontroller projects and refinement of three-dimensional printers. Dr. Bell maintains a blog on his research projects and many other interests. You can find his blog at http://drcharlesbell.blogspot.com/.