MySQL Essentials
Bill Papp Principal Sales Consultant Oracle MySQL What is MySQL?
2 My Experience with MySQL Is……?
• I‟ve never seen / used MySQL – I‟m only here because my boss told me to come……
• Downloaded and played around with it in college „cause I didn‟t have money for a „real‟ database……
• Have developed some websites / applications…they seem to work well most of the time……
• I periodically help Facebook tune their servers and am presenting in a MySQL Track at Oracle Open World next month!
3 MySQL Overview
• MySQL AB, founded in 1995 • Acquired by Sun in 2008; Sun/MySQL acquired by Oracle in 2009 • 12+ million product installations • ~65,000 downloads each day • Part of the rapidly growing open source LAMP stack • MySQL GPL & Commercial Editions Available
4 LAMP
Operating System L
Application Server A
Database M
Scripting P
5 MySQL is Everywhere
Multiple Platforms Multiple Languages
C C++ C#
6 MySQL: #3 Most Deployed Database
Oracle 70% 8% 9% 14%
SQL Server 68% 11% 6% 15%
MySQL 50% 13% 10% 28%
DB2 39% 12% 11% 38%
Informix 18% 13% 14% 55%
Sybase ASE 15% 14% 14% 57%
Sybase IQ 14% 14% 13% 59%
Teradata 11% 15% 13% 61%
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Currently Deployed Plan to Deploy Next Year Plan to Deploy but Not in the Next Year No Plans to Deploy 63% Are Deploying MySQL or Are Planning To Deploy
7 Oracle’s Investment in MySQL
• Make MySQL a Better MySQL • #1 Open Source Database for Web Applications
• MySQL Focus Areas • Web, Embedded & Telecom • LAMP • Windows
• Develop, Promote and Support MySQL • Improve engineering, consulting and support • Leverage 24x7, World-Class Oracle Support
• MySQL Community Edition • Source and binary releases • GPL license
8 More Products Releases Than Ever Before Continuous Innovation
• MySQL Database 5.6 • MySQL Database 5.5 • MySQL Cluster 7.2 • MySQL Enterprise Backup 3.5 DMR* • MySQL Enterprise Monitor 2.3 and MySQL Labs! • MySQL Cluster Manager 1.1 All GA! • MySQL Workbench 5.2 GA! •MySQL Enterprise Monitor 2.2 •MySQL Cluster 7.1 • MySQL Cluster Manager 1.0 A Better MySQL All GA!
*Development Milestone Release
Q2 CY2010 Q3 CY2010 Q4 CY2010 Q1 CY2011 Q2 CY2011
9 MySQL Customers
Web OEM / ISV’s
SaaS, Hosting Telecommunications Enterprise 2.0
MySQL Core Areas
10 Social Media: Facebook
Application Facebook is a social networking site that connects people with friends and others who work, study and live around them.
Key Business Benefit MySQL has helped Facebook to grow to 750+ million active users.
Why MySQL? “We are one of the largest MySQL web sites in production. MySQL has been a revolution for young entrepreneurs.”
Owen Van Natta Chief Operating Officer Facebook
11 eCommerce: eBay Application Real-time personalization platform to display advertising to more relevant buyers and conduct more effective merchandizing. Key Business Benefits Highly scalable and cost-effective system that handles all of eBay’s personalization and session data needs. Manages 4 billion requests per day of 50/50 read/write operations. Why MySQL Enterprise Edition? • Cost-effective • Performance: 13,000 TPS on Sun Fire x4100 • Scalability: Designed for 10x future growth • Monitoring: MySQL Enterprise Monitor
Chris Kasten, Kernel Framework Group, eBay
12 OEM/ISV: Adobe
Application Adobe embeds MySQL into several Adobe Creative Suite 3 components, including Adobe Acrobat CS3, Adobe Bridge CS3 and Adobe Version Cue CS3.
Key Business Benefit MySQL allows Adobe to implement the workgroup productivity features in Adobe Creative Suite CS3 so that our users can be more productive.
Why MySQL? “We chose MySQL for its reliability, ease of use, low administration and high performance.” Mike Wallen Version Cue Product Manager
13 Telco: Alcatel-Lucent
Application Alcatel-Lucent’s next generation subscriber database applications
Key Business Benefit The subscriber database at the heart of the application needed to provide more flexibility and to deliver higher performance, scalability, and reliability at a lower cost.
Why MySQL? Performance & Lower Cost “MySQL Cluster won the performance tests hands down, and met our needs perfectly.” Alain Chastagner, Alcatel-Lucent
14 Before We Get Started: Basics
15 Hardware: The Perfect MySQL Server
• The more cores the better (especially for 5.5 and later) • x86_64 - 64 bit for more memory is important - The more the better • Linux or Solaris best, Windows and Unix also fine. • Fast HD (10-15k RPM SATA) or NAS/SAN…… • RAID 10 for most, RAID 5 OK if very read intensive • Hardware RAID battery backed up cache critical! • More disks are always better! - 4+ recommended, 8-16 can increase IO • …Or SSD (for higher throughput) • Intel, Fusion-IO good choices; good option for Slaves • At least 2 x NICs for redundancy • Slaves should be as powerful as the Master
16 Software: Where to Download?
• Oracle E-Delivery • MySQL Commercial Binaries • Commercial-licensed add-ons • MySQL Enterprise Monitor • MySQL Enterprise Backup • My Oracle Support • Latest patch levels • Dev.mysql.com • GPL Binaries and Source Code • Labs.mysql.com • Experimental code • E.g. InnoDB + Memcached
17 Installing & Configuring MySQL
18 The MySQL 15 Minutes Rule
“Download, install and start using MySQL in 15 minutes.”
• Valid since the early days of MySQL
19 MySQL Windows Install
20 MySQL Server Support for Windows
• All current Windows versions… – Windows XP – Windows Vista – Windows 7 – Windows Server 2003 – Windows Server 2008 • Minimal additional requirements • 32 and 64 bit x86 architectures supported
21 New! – Windows Installer
22 Improved MySQL Usability
• 15 Minute Rule down to 3 Minutes for full MySQL stack – What will you do with all that time?!
>>>
23 24 25 26 OR: Installation Packages
• Complete (MSI Installer or unzip)
• Essentials
– Excludes Instance Manager
– Documentation
– Developer Components.
27 Begin Installation
• Run mysql-5.x.xx-winxx.msi
• Select type of install…
– Developers select Complete – DBAs select Typical
28 Complete Installation
• Several Next clicks • Then Finish • Leave Configure checked
29 Post Installation Tasks & Security
39 Post Installation Tasks To Secure Installation
Delete the „test‟ database
Secure the „root‟ account
Ensure root can‟t login from an anonymous host
Delete anonymous accounts
MSI installer or mysql_secure_installation script (in scripts directory) can be used to automate some of these steps
40 Application / Architecture Considerations
41 Pluggable Storage Engine Architecture
InnoDB as default storage engine • ACID Transactions, FKs, Crash Recovery
42 Storage Engines
• Some MySQL perceptions are about MyISAM • Fast for simple operations, but not scalable due to table locks • Vulnerable to crashes; repair tables on restart • No transactions; can’t roll back after mistakes or errors • InnoDB is the most Oracle-like part of MySQL •Concurrent readers and writers; high scalability •Transactional - commit changes, roll back mistakes, queries see snapshot data; a.k.a. ACID model • Fast and reliable crash recovery • InnoDB = default storage engine in 5.5 and up • Still on 5.1? Install InnoDB Plugin
43 Storage Engines (cont.)
• What does it mean for InnoDB to be default? • Define a primary key for all tables, based on most important queries. • Secondary indexes also important to avoid full-table scans. • Turn auto-commit off. • Set innodb_buffer_pool_size as high as practical. • Investigate file-per-table mode, Barracuda file format, compression. • Lots more documentation in 5.5: SE chapter, Optimization, Glossary. • MEMORY storage engine • InnoDB with big buffer pool can give similar benefits. • For queries with >, <, BETWEEN operators, explore USING BTREE.
44 Developing MySQL Applications
51 MySQL User Survey: Top Languages
52 Developing Java Applications with MySQL
53 Connecting Java to MySQL
•The JDBC driver is called MySQL Connector/J •Type IV (all-java) •Available from the following sources • Software • http://dev.mysql.com/downloads/connector/j/5.5.html • Maven, Ivy • Many Linux and BSD distributions • Documentation • http://dev.mysql.com/doc/refman/5.5/en/connector- j.html
54 Architecting for Success - Start Clean
Presentation } Test this
Transactions
Business Logic } Test this
Caching
Persistence } Test this
56 Points to take away
•Start with clean architecture • Easier to start with than refactor to • Enable reusability • Enable quality through testability • Easier to add caching, partitioning later •Consider frameworks instead of “raw” JDBC: • Avoid repetitive boilerplate code • Avoid resource-wasting mistakes • Enable re-use of persistence components • Business logic-level transactions become simpler •Learn More: www.mysql.com/java
57 Developing PHP Applications with MySQL
58 Introduction to PHP
• PHP Hypertext Preprocessor • Web-Centric Scripting Language – Processed by a Web-Server module – Can be embedded in HTML – Built-in functionality for dealing with Web-Things • PHP consists out of a relatively small core and a large collection of function libraries (“extensions”) • http://php.net
59 PHP Installation
• You need: – A Web Server (Apache HTTPd, Oracle Web Server, Microsoft IIS, nginx, …) – MySQL Server – PHP runtime • For getting started there are bundles installing all of them – XAMPP • It is also useful to install an IDE like NetBeans for editing PHP files
60 XAMPP
www.apachefriends.org/xampp
61 IDE – NetBeans – www.netbeans.org
62 Verifying the PHP Installation
c:\xampp\htdocs\test.php:
http://localhost/test.php
63 A First PHP Example
\n”; while ($row = mysqli_fetch_assoc($result)) { printf(“
64 PHP Frameworks • PHP applications often have to do the same things over and over again – Handling navigation – Handling form data • There are proven concepts for application architectures – Model-View-Controller
Frameworks usually save time and enforce clean structures
Also make choice of PHP extension less of a factor
71 Examples of Frameworks
• There are two major general purpose frameworks – Zend Framework • Zend Technologies, Ltd. • http://framework.zend.com – Symfony • Sensio Labs • http://www.symfony-project.org – Others include: CakePHP, Agavi, Zeta Components • Many applications provide their own framework – Typo3, Drupal, Joomla
72 Learn More: PHP Resources • MySQL DevZone (technical articles, developer interview …) http://dev.mysql.com/
• MySQL Documentation http://dev.mysql.com/doc/
• Download Free MySQL White Papers http://dev.mysql.com/why-mysql/white-papers/
• View MySQL Training Courses http://education.oracle.com/pls/web_prod-plq- dad/db_pages.getpage?page_id=402&p_nl=JMSQ
73 MySQL on Windows
74 MySQL on Windows - Did you Know?
• Windows is the #1 Development Platform for MySQL
• Windows is the #1 Deployment Platform for MySQL Community Edition Users Why MySQL on Windows?
• Lower Total Cost of Ownership (TCO) • Performance and Scalability • Cross-Platform Flexibility • Ease of Use and Administration
Lower TCO Performanc Cross- Ease of Use e Platform
76 MySQL vs. Microsoft SQL Server 3 Year TCO
$769,860 $800,000 $700,000 $600,000 $500,000 $400,000 $300,000 $60,000 $200,000 $100,000
$0 -Term: 3 Years - Users: Unlimited (web) - Servers: 4 MySQL Enterprise - Hardware: Intel x86 Edition - CPUs/Server: 4 Microsoft SQL Server - Sockets/Server: 4 Enterprise Edition - Cores/Socket: 4 - MySQL: MySQL Enterprise Edition - Microsoft: SQL Server Enterprise Edition MySQL 5.5 on Windows
MySQL 5.5.6 (New InnoDB)
MySQL 5.1.50 (InnoDB Plug-in)
MySQL 5.1.50 (InnoDB built-in)
SysBench Benchmark Intel x86_64 4 CPU x 2 Cores/CPU 540% performance gain 3.166 GHz, 8GB RAM Windows Server 2008 for MySQL 5.5 over 5.1.50; at scale MySQL 5.5 on Windows
MySQL 5.5.6 (New InnoDB)
MySQL 5.1.50 (InnoDB Plug-in)
MySQL 5.1.50 (InnoDB built-in)
SysBench Benchmark Intel x86_64 4 CPU x 2 Cores/CPU 1560% performance gain 3.166 GHz, 8GB RAM Windows Server 2008 for MySQL 5.5 over 5.1.50; at scale MySQL’s Windows Platforms
• Architecture • X86 – 32 & 64 bit OS • Windows 2008 • Windows 2008 RC • Windows 7 • Windows Vista • Windows 2003 Server • Windows XP
80 Visual Studio Integration: Editing Database Objects
Tables Views Columns Stored Procs & Functions Indexes Triggers
User-Defined Functions Foreign Keys (UDF)
Column & Table Properties Cloning Database Objects
Using ADO.NET Entity Framework MySQL SQL Editor
MySQL Website DDL T4 Template Macro Configuration Tool
81 82 83 84 Windows Connectors
Developed by Oracle Community • Connector/NET ADO.NET • PHP • Connector/ODBC ODBC • Perl • Connector/J JDBC • Python • Connector/C C API • Ruby • Connector/C++ C++ API
Broad Language Support
http://www.mysql.com/products/connector/ Connector/NET Resources
• Visual Studio integration http://dev.mysql.com/doc/refman/5.5/en/connector-net-visual- studio.html
• Connector/Net is available for download at: http://www.mysql.com/downloads/connector/net/
• Exploring MySQL in the Microsoft .NET Environment http://dev.mysql.com/tech-resources/articles/dotnet/index.html
• Using MySQL With .NET/C#/Visual Basic/Powershell http://dev.mysql.com/usingmysql/dotnet/
86 The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle‟s products remains at the sole discretion of Oracle.
87