Upload
yucheng-hu
View
229
Download
4
Tags:
Embed Size (px)
DESCRIPTION
MySQL Would You Like Transactions http://www.ossez.com/forum.php?mod=viewthread&tid=26897&fromuid=426 (出处: OSSEZ)
Citation preview
www.brianhitchcock.net
MySQL
Would You Like Some Transactions With That Table?
www.brianhitchcock.net Oct 29, 2009 Page 2
Slides Are Available
www.brianhitchcock.net Oct 29, 2009 Page 3
What Is MySQL?
Most popular open source RDBMS
Open source means 'free'
Really? No cost at all?
Widely used
Sabre – airline reservations
What does Oracle DBA need to know?
Many differences...
www.brianhitchcock.net Oct 29, 2009 Page 4
Why Should I Care?
I'm an Oracle DBA
MySQL means nothing to me
It isn't a 'real' RDBMS
Why should I learn about MySQL?
MySQL is being used by real businesses
Can't hurt your employability
Many jobs expect DBA to know multiple RDBMS
Why not learn one that is widely used?
And it's free – you can download and install right now!
www.brianhitchcock.net Oct 29, 2009 Page 5
Oracle DBA Perspective
What will we look at?
Installing
Start/stop
How database/tables stored
Backups
Transactions
Storage engines
www.brianhitchcock.net Oct 29, 2009 Page 6
My Message
Compare MySQL to Oracle
Not to be critical of MySQL
Not to praise Oracle
Make Oracle DBAs aware
How much we assume about RDBMS
Because Oracle does things a certain way
MySQL is very different
Assuming it is like Oracle can cause serious problems
Does your business understand the differences?
The cost of being 'free'?
www.brianhitchcock.net Oct 29, 2009 Page 7
MySQL Versions
MySQL Enterprise
Have to buy support
MySQL Community Edition
The 'free' version
MySQL Community Edition Preview Release
Available for download
Ready for prime time?
Oracle doesn't offer 12g for trial download...
www.brianhitchcock.net Oct 29, 2009 Page 8
MySQL Versions
www.brianhitchcock.net Oct 29, 2009 Page 9
MySQL – Where Did It Come From?
Used to store web site logs
Transactions
What's that?
If we lose some records
So what?
Supported by an individual
Do your own thing
Recovery
Not to worry, plenty more web logs every day
www.brianhitchcock.net Oct 29, 2009 Page 10
Some Differences – MySQL/Oracle Oracle
Database
Schema
a group of database objects
Database user
Maps to a database schema
MySQL
Server
Databases
Group of database objects
Users don't map to database
www.brianhitchcock.net Oct 29, 2009 Page 11
Some Differences – MySQL/Oracle
Storage engines
Transaction support
Performance
Hot backup
Binary logging and recovery
Table locking
Corruption
Misc.
www.brianhitchcock.net Oct 29, 2009 Page 12
Storage Engines
MySQL gives you a choice
Oracle, all transactional all the time (OATATT)
MySQL storage engines
MyISAM (IBM, Indexed Sequential Access Method)
Very fast read
InnoDB
Transactional, like Oracle
Separate software, owned by Oracle
Many others
See next chart
www.brianhitchcock.net Oct 29, 2009 Page 13
Storage Engines
www.brianhitchcock.net Oct 29, 2009 Page 14
InnoDB Storage Engine
Imagine mixing
MyISAM, InnoDB tables in a statement
What does 'transactional' mean?
What does “recovery” mean?
www.brianhitchcock.net Oct 29, 2009 Page 15
CSV Storage Engine
CSV storage engine
Stores data in text files
Using comma-separated format
www.brianhitchcock.net Oct 29, 2009 Page 16
Blackhole Storage Engine
My favorite
This is where we store all the data relating to the Raiders and their 'Commitment to Excellence'
www.brianhitchcock.net Oct 29, 2009 Page 17
Yeah, But...
No problem
I'll just make all the tables InnoDB
Cool, but
MySQL catalog (system?) tables are MyISAM
Can't change them
Table storage engine can be changed at any time
Privileged users
No one should do this, but...stuff happens
Create table syntax
Supports overriding default storage engine
www.brianhitchcock.net Oct 29, 2009 Page 18
Transaction Support
MyISAM
Default table type
Table type of system databases
Does not support transactions
Example
Writing to MyISAM tables and server crashes
Who know what was and wasn't written to tables
No recovery
www.brianhitchcock.net Oct 29, 2009 Page 19
Performance
Many large MySQL servers in use
Performance must be good
or good enough for 'free'
Optimizer
Different storage engines
How to optimize statement that has
MyISAM tables
InnoDB tables
Does it support all storage engines you are using?
www.brianhitchcock.net Oct 29, 2009 Page 20
Hot Backup MySQL does not have this
Backup option #1
Shutdown server, copy all files, startup server
Backup option #2
Lock all tables
Dump all data to a dump file
Dump file is set of SQL to recreate database
Very slow to recover
Backup option #3
Buy hot backup software product
Not free
www.brianhitchcock.net Oct 29, 2009 Page 21
Binary Logging and Recovery
MySQL
Default, no logging
You can configure binary logging
Three formats
Statement-based
Row-based
Mixed
Binary log filenames have format
binlog.000001, binlog.000002, etc.
You must apply them in correct order
www.brianhitchcock.net Oct 29, 2009 Page 22
MySQL Binary Logs
MySQL does not have any way of knowing when replaying the binary logs which statements need to be executed and which are already committed.
Oracle DBA doesn't worry about this
Oracle checks and tells you which archived redo log is needed next
Oracle won't allow archived redo logs to be applied out of order
www.brianhitchcock.net Oct 29, 2009 Page 23
Binary Logging Formats
www.brianhitchcock.net Oct 29, 2009 Page 24
Binary Log Issues
www.brianhitchcock.net Oct 29, 2009 Page 25
Table Locking
MyISAM storage engine
Does not support row level locking
Table locks
Performance?
InnoDB storage engine
Supports row level locking
www.brianhitchcock.net Oct 29, 2009 Page 26
Corruption
Oracle
I have rarely seen any cases
But all tables support transactions
MySQL
What does it mean to rollback
When different storage engines involved
Some support transactions, some don't
Some tables will be rolled back
Others won't
Is this corruption?
www.brianhitchcock.net Oct 29, 2009 Page 27
MySQL Corruption Issues
Good read
Discusses corruption issues in MySQL engines
I'm not saying this happens often
But you need to be aware of these issues
Another difference from Oracle
Different storage engines, different corruption mechanisms
http://www.mysqlperformanceblog.com/2006/07/30/mysql-crash-recovery/
www.brianhitchcock.net Oct 29, 2009 Page 28
MySQL Issues
Misc
Referential Integrity
Some storage engines support
Triggers
Row-level, not statement-level
Directload
Not supported
Parallel Query
Not supported
www.brianhitchcock.net Oct 29, 2009 Page 29
MySQL Issues
White Paper
Compares MySQL to PostgreSQL
PostgreSQL, another open source RDBMS
More like Oracle than MySQL
Discusses issues with MySQL
I'm not endorsing PostgreSQL
But the whitepaper is very good
PostgreSQL vs. MySQL A Comparison of Enterprise Suitability
www.brianhitchcock.net Oct 29, 2009 Page 30
MySQL Table Storage
MyISAM
Each table has three files
<filename>.frm – Data dictonary information
<filename>.MYD – table data
<filename>.MYI – table indexes
InnoDB
Data and indexes in a tablespaces
Made up of one or more datafiles
Sound familiar?
www.brianhitchcock.net Oct 29, 2009 Page 31
Documentation Online
www.brianhitchcock.net Oct 29, 2009 Page 32
Documentation Online
www.brianhitchcock.net Oct 29, 2009 Page 33
Documentation Online
www.brianhitchcock.net Oct 29, 2009 Page 34
Talk Is Cheap
A little less conversation
A little more action
Download and install MySQL to your laptop now
Slides show the steps
Windows
You will have a fully functional MySQL server
Start learning right now
www.brianhitchcock.net Oct 29, 2009 Page 35
Install MySQL – Windows
Windows Vista
6.0 Service Pack 1
Screenshots shown
Windows XP
Professional Version 5.1
Same steps
Very minor differences in what you see
www.brianhitchcock.net Oct 29, 2009 Page 36
Downloads?
www.brianhitchcock.net Oct 29, 2009 Page 37
Downloads?
www.brianhitchcock.net Oct 29, 2009 Page 38
Enterprise Version
www.brianhitchcock.net Oct 29, 2009 Page 39
Community Version
www.brianhitchcock.net Oct 29, 2009 Page 40
Windows Downloads
www.brianhitchcock.net Oct 29, 2009 Page 41
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 42
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 43
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 44
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 45
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 46
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 47
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 48
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 49
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 50
Windows Installation
Uncheck
www.brianhitchcock.net Oct 29, 2009 Page 51
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 52
Windows Installation
Check
www.brianhitchcock.net Oct 29, 2009 Page 53
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 54
Windows Installation
mysql
www.brianhitchcock.net Oct 29, 2009 Page 55
Windows Installation
www.brianhitchcock.net Oct 29, 2009 Page 56
Accessing MySQL Windows
Click Start
Programs
MySQL
MySQL Server 5.1
MySQL Command Line Client
Right-click
Send to
Desktop (Create Shortcut)
Double-click desktop icon
MySQL Command Line Client
www.brianhitchcock.net Oct 29, 2009 Page 57
Accessing MySQL Windows
mysql
Shortcut created at installation
www.brianhitchcock.net Oct 29, 2009 Page 58
mysql client utility
Similar to SQL*Plus
www.brianhitchcock.net Oct 29, 2009 Page 59
Now What?
Stop, start MySQL server
What databases are available
show databases;
Set default database
use <dbname>
What tables are in the database
show tables;
www.brianhitchcock.net Oct 29, 2009 Page 60
Windows Vista
Stop/Start
Services
Start
Settings
Control Panel
System and Maintenance
Administrative Tools
Services
Scroll down to MySQL, highlight
Upper left, options for Stop, Pause, Restart
If MySQL is down, option to Start
www.brianhitchcock.net Oct 29, 2009 Page 61
Windows XP Stop/Start
Command line
net stop mysql, net start mysql
Services
Start
Control Panel
Administrative Tools
Services
Services window
Scroll down to MySQL, highlight
Upper left, options for Stop, Pause, Restart
If MySQL is down, option to Start
www.brianhitchcock.net Oct 29, 2009 Page 62
www.brianhitchcock.net Oct 29, 2009 Page 63
www.brianhitchcock.net Oct 29, 2009 Page 64
System Databases
INFORMATION_SCHEMA
Catalog database
MYSQL database
User and privilege information
TEST
For you to play in...
These databases are created at installation
www.brianhitchcock.net Oct 29, 2009 Page 65
MySQL Server Configuration Controlled by 'option' file(s)
Similar to Oracle pfile or spfile
SHOW VARIABLES
See current values
Standard location(s)
Search order
One of the most common problems
Persons don't know where these files are
Make changes that don't take affect
Can't find the file or files
www.brianhitchcock.net Oct 29, 2009 Page 66
Option File(s) MySQL searches multiple locations
Uses most recent value of each parameter
How to know all files being scanned by MySQL?
mysql –help
Note: dash dash help
www.brianhitchcock.net Oct 29, 2009 Page 67
Option File
www.brianhitchcock.net Oct 29, 2009 Page 68
Option File
www.brianhitchcock.net Oct 29, 2009 Page 69
Option File
www.brianhitchcock.net Oct 29, 2009 Page 70
Option File
www.brianhitchcock.net Oct 29, 2009 Page 71
Option File
www.brianhitchcock.net Oct 29, 2009 Page 72
MySQL Filesystem Layout
From option file (my.ini)
basedir
Where software is stored
datadir
Where table data is stored
www.brianhitchcock.net Oct 29, 2009 Page 73
MySQL basedir
www.brianhitchcock.net Oct 29, 2009 Page 74
MySQL basedir/bin
www.brianhitchcock.net Oct 29, 2009 Page 75
MySQL datadir
www.brianhitchcock.net Oct 29, 2009 Page 76
MySQL Log Files
General Query Log
All client requests
Binary Log
Statements that modify data
Slow Query Log
Statements that take longer than 10 seconds
Error Log
Server messages
www.brianhitchcock.net Oct 29, 2009 Page 77
MySQL Log Files
Find log file locations
www.brianhitchcock.net Oct 29, 2009 Page 78
Summary
MySQL is 'free'
May need other products to make it work for you
Hot backup for example
MySQL is widely used
MySQL is very different from Oracle
DBA tasks and issues will be different
MySQL is not better or worse than Oracle
Just very different
www.brianhitchcock.net Oct 29, 2009 Page 79
The End?
You now have a MySQL server installed
No excuses
Learn it, live it, love it
Update your resume
Next?
Multiple MySQL servers on same machine
Replication
etc.