Friday, December 19, 2008

Evolving trends and directions for DBAs and Developers: How do DBAs stay marketable?

I visit a large number of organizations every year to deliver training, short term consulting as well as business and technology seminars in the area of database servers, security, software development and middle-tier technology. So I thought I would share some of the trends I have seen in 2008 that I believe will continue in 2009.

I'm always being asked the following questions; "How do I stay marketable?" or "What trends are occurring in technology that impact DBAs and Developers?". The trends are pretty obvious, the question is what conclusions do we draw from them.

IT Continuing Trends for 2009

Some of the noticeable trends:
  • Common DBA skills (administration, backup/recovery, tuning) are becoming more of a commodity and easier to outsource every day. A recent quote from a high end recruiter "I don't have any use for technical DBAs. Now applications DBAs are worth their weight in gold".
  • Oracle Application DBAs (Financials, ERP, Hyperion, ...) are becoming more valuable and marketable every day. This is the skillset of the future, not the basic technical DBA skills.
  • Middle-tier applications increase in importance and visibility. The key in most organizations is their middle-tier business applications (vendor and custom). An Oracle database license can be a few million dollars. An Oracle or SAP Financials implementation can cost 100 million dollars. I wonder where an organization will place their emphasis?
  • Oracle Fusion Middleware skills (Oracle Application Server, web services, BPEL, SOA, XML, ...) are becoming more valuable than ever. As Oracle Fusion applications roll out in the future, these middle-tier skills will increase in marketability and demand.
  • Middle-tier architecture skills working with application servers, middle-tier caching, web services, J2EE, PHP, Ruby on Rails are increasing in demand.
  • Architectural skills and high availability expertise across all tiers are needed more than ever. If a system is slow, there has to be people that can do problem resolution and performance tuning across all tiers.
  • Cross platform expertise. DBAs that can support Oracle, MySQL and SQL Server environments are more valuable than a technical DBA that can only support one environment.
  • Virtualization will increase significantly. Oracle's VM and Sun's VM (Containers, Zones) will see an increase in database and application servers running production environments using VMs. Sun Containers are a very powerful way of setting up cloning and failover. So VMs not only provide very cost and environmental effective ways of implementing servers but offer significant advantages in administration and high availability. One of the biggest success stories with Sun Containers was an Oracle Hyperion implementation that the consultants told me that can't now imagine implementing this any other way.
  • Open source will continue to see significant growth in the next year. The reduced cost and flexibility of open source solutions will significantly help organizations be cost effective and competitive.
The best present you can give yourself for the next year is to learn new skills to increase your marketablity and value to organizations.

Wednesday, December 17, 2008

MySQL Profiling: SQL Tuning

MySQL provides a number of different tools for tuning SQL statements. Some of the key SQL tuning tools include:
  • EXPLAIN - Displays execution plans generated by the MySQL Cost Based Optimizer.
  • Status Variables - Contains statistics on SQL run time activity.
  • Profiling - Contains run time statistics on each phase in the execution of individual SQL statements.
Main Phases in Processing a SQL Statement

Profiling allows access to very detailed run time statistics on each phase of processing a SQL command. The main phases include:
  • Parsing the SQL statement.
  • Generating an execution plan.
  • Performing an execution and fetch.
  • Cleaning up resources.
Profiling Benefits

Profiling provides the following benefits:
  • Ability to understand time spent in each phase of processing a SQL command.
  • Displays if the OS performed a disk read because the requested block is not in memory.
  • The number of waits that occurred while the thread processed the SQL command.
  • Disk activity generated by the SQL statement.
  • Resources allocated for processing the SQL command.
  • Approximations of time required to process each step of the SQL statement.
  • Comparision of execution times relative to other SQL statements.
  • If you're into the source code, each C function and line number where it is executed for each step of processing the SQL statement.

Profiling Resources in MySQL

The profiling resources available beginning in MySQL 5.1.28 include:
  • SHOW PROFILE command.
  • SHOW PROFILES command.
  • Information_schema.profiling table.

Turning Profiling ON

Profiling is turned OFF (0) by default. Profiling is turned ON (1) at the session level. The PROFILING_HISTORY_SIZE parameter is used to determine how many statements are kept in the history. The default is 15 statements. The query id will change for each SQL statement executed in a session.



The SHOW PROFILES command will display the query id, the duration and the SQL command executed.

| Query_ID | Duration | Query
| 1 | 0.00073900 | SELECT Co.Name, Ci.Name, Ci.Population FROM CountryList Co, CityList Ci WHERE Co.Code = Ci.CountryCode AND Ci.Population > 8000000 |
| 2 | 0.00086100 | SELECT query_id, seq,state, duration, source_function FROM information_schema.profiling WHERE query_id = 1 |

SHOW PROFILE [type [, type] ... ]
[LIMIT row_count [OFFSET offset]]


| Status | Duration |
| starting | 0.000091 |
| freeing items | 0.000040 |
| logging slow query | 0.000007 |
| cleaning up | 0.000007 |
4 rows in set (0.00 sec)


There are much more interersting queries you can get out of this database object, but this simple query fits in the blog eaily and provides a hint of detailed information available.

mysql> SELECT query_id, duration, state
FROM information_schema.profiling WHERE query_id = 8;
| query_id | duration | state |
| 8 | 0.000100 | starting |
| 8 | 0.000068 | Opening tables |
| 8 | 0.000008 | System lock |
| 8 | 0.000013 | Table lock |
| 8 | 0.000028 | init |
| 8 | 0.000015 | optimizing |
| 8 | 0.000016 | statistics |
| 8 | 0.000017 | preparing |
| 8 | 0.001850 | executing |
| 8 | 0.000162 | Sending data |
| 8 | 0.000008 | end |
| 8 | 0.000006 | query end |
| 8 | 0.000069 | freeing items |
| 8 | 0.000034 | removing tmp table |
| 8 | 0.000007 | closing tables |
| 8 | 0.000005 | logging slow query |
| 8 | 0.000007 | cleaning up |
17 rows in set (0.01 sec)

Thoughts on Profiling

The profiling feature needs to mature more in MySQL, yet this early implementation does provide information that can be useful for evaluating SQL statements. Combining profile information, thread information and session state information together provides different perspectives into the evaluation of SQL processing.

Friday, November 28, 2008

Installing MySQL 5.1.30 using MOCA

MySQL 5.1 is GA with the 5.1.30 Release

MySQL 5.1.30 is the GA version of the MySQL 5.1 software version. The 5.1 release has some key features that users are going to like which include:
  • Table and Index Partitioning
  • Row-based and Mixed Replication
  • The embedded libmysqld library
  • Improved XML features with additional XPath support
  • Event Scheduler
  • Upgraded Advisors for the MySQL Enterprise Monitor
  • mysqlslap - a load emulator is pat of the MySQL distribution software
  • Server Log Tables - have more flexbility and more dynamic capability
  • MySQL Cluster - is a separate distribution from the MySQL 5.1 distribution. MySQL Cluster 6.2 and 6.3 can be installed separately.
  • The mysql_upgrade program offers a much easier upgrade process.
MySQL Optimal Configuration Architecture

The MySQL Optimial Configuration Architecture (MOCA) is a set of guidelines and best practices I developed to achieve the following goals:
  • Minimize points for failure.
  • Support multiple software installs on the same machine.
  • Support multiple database servers on the same machine.
  • Separate software files, data files, binary logs and administration files.
  • Reduce down time.
  • Reduce administration costs.
  • Provide a consistent configuration platform across an enterprise.
  • Separate database configuration files from operating system configuration files.
MOCA should not be used as a first time installation. Do not use MOCA until you are very comfortable with configuring MySQL and have a solid understanding of the operating system you are working with. The default MySQL installation is designed to take minimal resources and to install very easily. MOCA is designed to be a robust flexible install for MySQL production environments.

Installing MySQL: Linux, Solaris, MacOS

One of the benefits of the MOCA installation is this set of guidelines provides a very consistent install on different Linux and Unix operating systems. There are a few subtle differences such as how to add a new user on MacOS versus adding a user on Linux/Unix. This installation will demonstrate a MOCA installation on the Mac OS. These steps can also be used to perform an installation on Linux or Unix system.

Installing MySQL 5.1.30 on Mac OS 10.5

These instructions will walk you through a 5.1.30 installation of MySQL using MOCA on the Mac OS 10.5. These instructions can be followed for any MySQL 5.1.xx install. The Mac OS installation will be similar to a Solaris or Linux installation. Go to the MySQL documentation to review instructions if you are using a different operating system.

Review my blog entry "The MySQL Optimial Configuration Architecture" for more details on MOCA.

Be careful
Make sure you understand exactly what commands you are running and where you are running these commands from. If you are new to Unix/Linux be extremely careful before executing the following steps. If you are not sure of a command do not run it without reviewing the documentation. Use the man pages or look at other documentation to verify what you are doing. These steps are an overview to show the main steps for a simple installation. Spend sufficient time reviewing each of these steps and make appropriate changes for your environment.

Installation Summary
The following list outlines the steps performed to install MySQL on Mac OS. I recommend reading the blog "Top Ten Things to do before installing MySQL" further down on this site before beginning this installation.
  1. Setup the mysql operating system user id. Define the user's home directory, default shell, password, etc. It may be easier to delete the preinstalled mysql user and recreate it.
  2. Set up the operating system and directory structures (physical storage) for running MySQL. Change all directories where MySQL files will reside to be owned by the mysql user.
  3. Login in as the mysql operating system user and perform the installation and configuration as the mysql user.
  4. Install the MySQL software in the MYSQL_HOME directory.
  5. Create a startup file (my.cnf). Set up the locations for all mysql database files.
  6. Run the mysql_install_db script to set up the MySQL data directory.
  7. Start the MySQL server instance by running mysqld_safe.
  8. Test the MySQL Server instance by running the perl script
  9. Secure the mysql password environment with the mysql_secure_installation script.
  10. Login in using the mysql client and verify the installation. Review the data files, log files, binary log, error logs, etc.
  11. Define a server startup method. The script mysql.server is a likely option.
  12. Define a backup and recovery strategy. Test your back and recovery processes.
  13. Have fun with MySQL. :)

Installation Environment
Hardware: MacBook Pro laptop , 2GB of memory, dual core
Operating System: Mac OS 10.5.5
Disk: 160 GB
MySQL: RC 5.1.30 for Mac OS X (TAR packages)

Preinstallation steps:

Check to see if there is a previous MySQL installation. A MySQL installation often comes with a MacOS, Linux and Solaris system. Verify an older version of MySQL is not currently running. Remove all previous mysql files or use RPMs to deinstall any previous MySQL installation for Unix platforms.
Remove any mysql files in the following directories (especially any my.cnf files):

Verify the setup of the mysql operating system user account. A mysql user may already exist in the /etc/passwd file. It's probably easiest to drop and recreate the mysql user. Mac OS did something weird with the mysql user in 10.5 by naming it _mysql. Dropping the user and recreating is as mysql cleans up a lot of little issues. Go to System Preferences | Accounts and drop the mysql user and recreate it. Make sure and set the proper group name, login shell, etc. for the new mysql user account.

Dependent on the default shell you pick for the mysql user (bash, ksh, etc) set the following environmental variables in the mysql user's profile file (ex: .bash_profile).

export MYSQL_BASE=/opt/mysql
export MYSQL_HOME=$MYSQL_BASE/5.1.30

Define the directory structure for the MySQL environment:
Bring up a terminal window as the root or administrator userid.

Use the mkdir command to create the directories listed below. I have added little notes about the purpose of each of these directories. Do not include the notes when you type the commands.
Create the directory /opt/mysql for placing the MySQL software.
# mkdir -p /opt/mysql/software

Go to and choose the MySQL softwware to download (mysql-5.1.30-osx10.4-i686.tar.gz). Place this zip file in the /opt/mysql directory.

# mkdir -p /db01/mysql/mysql01/data # MySQL data directory
# mkdir -p /db02/mysql/mysql01/binlogs # location of binary log files

# mkdir -p /db03/mysql/mysql01/ # administration directory HOME and location of PID file

# mkdir /db03/mysql/mysql01/startup # location of my.cnf files
# mkdir /db03/mysql/mysql01/run # location of socket file
# mkdir /db03/mysql/mysql01/errors # location of error file
# mkdir /db03/mysql/mysql01/logs #location for general and slow logs
# mkdir /db03/mysql/mysql01/scripts # administration scripts
# mkdir /db03/mysql/mysql01/sql # generic sql code

# mkdir -p /db04/mysql/mysql01/backups # backup files

# mkdir /db04/mysql/mysql01/exports # exports

# mkdir /db04/mysql/mysql01/misc # miscellaneous backups (single tables, etc)

Set permissions for the MySQL directory structure
Go to each of these parent directories and change the owner and group to mysql. The operating system userid root password will be your main Mac OS password for your administrator. Make sure you are in the right directory before running any recursive command. If you are in the wrong directory you could mess up your operating system. Execute the pwd command to make sure you are in the right directory.
Login as your administrator userid or root userid to run the following commands. Be extremely careful you do this correctly!
# chown -R mysql:mysql /db01 /db02 /db03 /db04 /opt/mysql

Set up the MySQL software
Do NOT perform the MySQL installation as the root or OS admin user. Login in as the mysql operating system user id and verify.
# su - mysql
$ who am i
mysql ttyp1 Nov 10:19

Go to the /opt/mysql directory then run the following commands to set up the MySQL HOME directory (MYSQL_HOME).
The symbolic link will set /opt/mysql/5.1.30 as the software location for MySQL.
$ cd /opt/mysql
$ tar zxvf mysql-5.1.30-osx10.4-i686.tar.gz

Create a new my.cnf file

Create a new my.cnf file from one of the sample files in the $MYSQL_HOME/support-files.
$ cp ./support-files/my-small.cnf my.cnf

Add the following parameters to the my.cnf file.
Go ahead and use the default socket location to complete the installation. Once the installation is complete, it is recommended to move the socket to the location displayed below. Be careful when moving the my.cnf to its own location. It is a recommended best practice but make sure all mysql programs can find the configuration file.


[client] # global options for every client:

Setup the MySQL environment

# Setup the mysql data directory. Make sure you are logged in as the mysql OS userid. When done go to the /db01/mysql/mysql01 directory and make sure it is setup correctly. If this is your first time setting up MySQL on Unix/Linux you may want to keep the my.cnf file in the /opt/mysql/5.1.30 directory. This default location will avoid having to specify the location of the my.cnf file.
$ cd /opt/mysql/5.1.30
$ scripts/mysql_install_db --defaults-file=/db03/mysql/mysql01/startup/my.cnf
$ cd /db01/mysql/mysql01/data
$ ls -la

Start the MySQL daemon using the new startup my.cnf file.

There are multiple ways to start up and shutdown a MySQL server. Below I use the mysqld_safe and mysqladmin commands.

$ cd /opt/mysql/5.1.30
$ bin/mysqld_safe --defaults-file=/db03/mysql/mysql01/startup/my.cnf &
$ ln -s /db03/mysql/mysql01/startup/my.cnf my.cnf

Test the MySQL daemon with and review the output.
This test is optional. The script takes a long time to run. :)

$ cd /opt/mysql/5.1.30/mysql-test
$ perl > mysql-test-run.output

The mysqladmin command can be used to shutdown the database server.
$ mysqladmin -uroot -p shutdown

Login to the mysql server and secure the password environment.
# Login to mysql and see that no passwords have been setup yet.
$ mysql -uroot
mysql> select host, user, password from user;
mysql> quit

# Run the following script and set the values listed below. When prompted enter new password for the mysql database userid. Do NOT set this to the same value as the operating system userid mysql.
$ mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

#Login to your new mysql server environment. Never type a database password on an operating system prompt. Verify a password now exists for the mysql userid on the localhost.
$ mysql -uroot -p
mysql> select host, user, password from mysql.user;

Post Installation Steps
Login in using the mysql client and verify the installation. Review the data files, log files, binary log, error logs, etc. Make sure you are comfortable with the new environment.

Define a server startup method. The script mysql.server is a likely option. Test the startup and shutdown processes.

Define a backup and recovery strategy. Test your back and recovery processes.

Remember there are the following userids in this environment:
  • root - Linux/Unix operating system user id.
  • root - MySQL database user id.
  • mysql - Linux/Unix operating system user id.
Installing the MySQL GUI Tools Bundle
Installing the MySQL GUI tools should be installed with the .DMG file on Mac. The nice thing is it is a three click install: 1) Click to download the GUI Tools .DMG file from the dev/ site 2) Click to open the file on the Mac OS. 3) Click to move it into the Applications directory for Mac.

This is the MySQL GUI Tools Bundle which includes the following:

  • MySQL Administrator
  • MySQL Query Browser
  • MySQL Migration Toolkit (currently not available for Mac OS in bundle)
Once you install the MySQL GUI Tools bundle for the Mac OS, run the .dmg file. It will ask you to drag the MySQL Tools icon to the Applications directory. After dragging the icon to the applications directory, go the the applications directory using Finder.

Before launching the MySQL Administrator or Query Browser, if you are using a non-default sock, click on advanced options on the login screen and enter the socket file you defined in your my.cnf file. Then login to either of these two tools.

These instructions walk through the basic steps for setting up a MySQL server on a Mac OS. Remember this article discusses a basic install. It does not include setting up memory, InnoDB server parameters, etc. This will allow you to have fun in the documentation. :)

Have fun with MySQL. :)

Thursday, November 27, 2008

Why use Second Life? What's so great about it?

As organizations become more global and virtual, there is an increased need to find better ways for people to collaborate and work together virtually. Today we have wikis, IRC, Skype, messaging and webcasts, but none of these methods do a good job of creating great interaction, collaboration, camaraderie, friendships as meeting in person. For example, I recently had to work with someone on organizing a number of database training sessions at a conference to prepare people for certification. We used email, IRC and Skype to collaborate on ideas. A few weeks later we met in person. During the two hour dinner we came up with more ideas, communicated more effectively, built a stronger working relationship and friendship. We kept building on ideas each other had and after the dinner we both agreed we accomplished more in two hours meeting in person than we ever could have accomplished using any of the above mentioned communication methods.

Organizations and people are required to work more virtually and remotely which has a tremendous impact on communication. While doing nothing to address the lack of social interaction and how this impacts people. So what do we do when we can not meet directly with people? Virtual reality and virtual worlds using avatars are a new method organizations are looking into to have virtual environments communicate more effectively. Second Life is the virtual environment I have been working with. Sun Microsystems, IBM, Cisco and a large number of fortune 1000 companies and universities are building large virtual environments. On the Sun Islands in Second life an avatar's conduct is held to the same standards as if a Sun employee, parter or customer was at a Sun Microsystems office.

Below are some thoughts and experiences I have found in second life.
  • If you look at how far people stand from each other in real life, when working with avatars studies have shown that avatars stand the same distance from each other when having a conversation as in real life.
  • I was waiting for a meeting to start and in the virtual world it was raining. My avatar was in a virtual world standing in virtual rain. However it started to bother me that I was standing in the rain and I ended up moving my avatar inside. I felt this interesting because it bothered me that I was uncomfortable standing in virtual rain. I should not have cared.
  • Children, teenagers and adults are learning to work together differently in real life. If you look at webkinz, World of Warcraft, Madden Football, these are extremely popular games that allow someone to experience virtual reality. Even Barnes and Noble is moving to avators. What people often miss is that these virtual environments are changing how people think, learn and interact with each other.
  • If your avatar is struck, knocked down or bumped into, someone will have a similar mental response as if they would in real life.
  • Organizations are finding they can train people more effectively and at greatly reduced costs using avatars and virtual reality.
Working with other avatars in virtual worlds creates friendships, stronger working relationships and more collaboration and exchange of ideas than any other electronic method of communication we have today. I can often communicate with you more effectively with much higher results than if I was working with you in real life. Let me give you a few examples:
  • What if I was trying to get you certified to repair jet engines? I would need a jet engine, lots of spare parts, tools and space to teach you. What if I instead build a jet engine in virtual reality. In virtual reality we could rotate the entire jet engine in a few seconds. In the virtual world we could how you how to take parts off, look at them three dimentionally, and put new parts on. The cost savings and effectiveness of this approach would be incredible. What if you wanted to work extra hours or on weekends to prepare for your certification? You could do this easily in a virtual world. This same approach could be used to teach brain surgery or anything else. Now obviously this does not replace real life interaction but this can be a cost effective and powerful way of training and communicating with people.
  • Virtual reality has been used as a strong therapy for people who have been disabled and can no longer walk or get out of the house easily.
  • Schools are using virtual reality to take students to Mexico and visit the Aztec ruins, ancient Greece and transport to all kinds of historical worlds. Virtual reality has been shown to be an excellent method to get kids interested in exploring and imagining different worlds and cultures.
  • If you were a martian and teleported instantly everywhere you would have no need for a vehicle like an automobile. Well what if I tried to explain to you what an automobile was if you had no point of reference? If you were on Mars and I was on Earth, I'm not sure Skype, IRC, Powerpoints or a wiki would be effective. What if instead I was able to show you in a virtual world a three dimensional automobile. What if I could virtually show you the moving parts of a car and how it operates. Then showed someone getting in a vehicle, starting it and driving around. I believe this virtual method of communication could be very effective.
Now because virtual worlds and avatars look like a game people do not respect its communication potential. They think virtual worlds are only for playing, people that have a lot of spare time on their hands or a waste of time. Well hear are two examples:
  • When telephones were first developed a leading scientific magazine of the time said the phone was a play toy for the rich. The magazine said it would be too expensive to run phone lines all over a city (let alone a country) and phones were just a fad.
  • When the internet first came out a lot of leading technical journals said it was a toy, was used for porn, you could meet bad people on it and was a waste of time. No one at that time could have imagined, caller id, GPS, email or text messaging, itunes, paying for things with your cell phones, cameras on phones or how small phones could be.
In the next few years, I believe we are going to see a tremendous evolution of technology of virtual worlds and as we communicate more globally the need for stronger and more effective communication will continue to grow.

Wednesday, November 26, 2008

Top Ten Keys to Delivering a Great Presentation

Here is my list of top ten things to do to deliver a great presentation.
  1. Make sure you properly prepare your presentation.
  2. Create a great first impression in the first ten seconds.
  3. Show enthusiasm and energy for your topic.
  4. Speak to the audience. Use the works "I", "you", "we" to engage the audience.
  5. Make eye contact with individuals throughout the presentation. Make each person feel as if you are talking to them.
  6. Break your presentation into different pieces. First five minutes, last five minutes, then break the rest of your presentation into 5-10 minute sections.
  7. Use variety: telling a story, visual aids, props, music, sound. Make sure you use your props wisely.
  8. Good body posture and movement.
  9. Audience will care more about what you say versus what is in your slides or presentation materials.
  10. Have fun and make sure you use your "own" style not someone else's style.

Being a "Great" Presenter

Being an excellent presenter is one of the most important skills you need to have to be successful in your career. Excellent presenters:
  • Make more money.
  • Have larger social and business networks.
  • Have more opportunities brought to them.
  • Have more opportunities to positively impact other people.
At the same time, when lists of top fears are shown, public speaking is always number one on the list of top fears. Public speaking is always at the top of the list ahead of cancer, dying in a plane crash, etc. There are so many excellent ways to develop your public speaking.
  • Starting small at a local ToastMasters would be a great way to meet others that present.
  • Practice giving a ten minute presentation and video taping your presentation is a good way to practice privately.
  • There are lots of great books on developing your presentation skills.
  • Joining local business, social and technology user groups is another way to get an opportunity to present.
  • There are excellent online resources. Below I have a few sites to look at.
  • Watch other people present. See what they do well and don't do well. You can attend local business and social user groups, business chambers, etc.

If you practice by video taping your presentation, keep improving it until you see someone you would enjoy listening to. Networking groups are always looking for speakers to present to them. Just make sure you find some ways to practice your presentation before speaking in front of other people.

Here are some good sites for learning more about delivering presentations:

Developing your presentation skills is one of the more important career decisions you can make! Try some of the above sources to develop your presentation skills and start finding ways to start presenting to different groups. The key is to start small and slowly build to presenting to larger groups.

Good luck and I'd love to hear some success stories on how you got started on presenting!

Tuesday, November 25, 2008

MySQL Presentation in Second Life

I really enjoyed delivering a MySQL positioning presentation in Second Life. I'm in the process of organizing 3D interactive presentations on MySQL and Oracle. As these presentations get scheduled I will be contacting different organizations within Sun to attend.

Wednesday, November 19, 2008

Sun CEC 2008: MySQL Sessions the buzz of the conference

There were a lot of great stories and sessions at the Sun CEC 2008 conference. The MySQL sessions were some of the most popular sessions of the conference. My focus was on delivering sessions that would teach Sun engineers and partners why MySQL is exploding in the market place. Additional sessions developed specific MySQL DBA skills for Sun engineers. More details can be found at:

Thanks to all the attendees and their great efforts during the hands on lab sessions.

Tuesday, November 18, 2008

Marten Mickos at Sun CEC 2008: MySQL Sessions

During the Sun CEC 2008 MySQL sessions training track it was great to get Marten Mickos to speak to the Sun audience. As I was lining up guest speakers for my MySQL sessions I really wanted to get Marten there to address questions Sun employees have on the MySQL acquisition and to discuss future directions of MySQL with Sun. Marten as one of the key leaders in open source as always did a great job of positioning MySQL within Sun for the Sun employees and partners.

Highlights I picked up from the presentation:
  • MySQL has a very large and constantly growing community embracing open source and MySQL. With over 70,000 downloads a day, MySQL continues to increase its user base and popularity. This popularity opens up more and more opportunities for MySQL Enterprise licenses and Sun products.
  • MySQL Enterprise licenses are a lot easier to understand and at a fraction of the cost of proprietary solutions.
  • MySQL's objective is to be "fast", "reliable" and "easy to use" versus trying to be feature crazy.
  • MySQL is not trying to compete directly against Oracle in the large Oracle OLTP environments. MySQL excels in web environments for very fast read performance is critical.
  • How MySQL generates revenue today and how revenue will continue to grow as a Sun product.
  • Where MySQL is today and where it is going.
Thanks Marten for the great job of showing Sun employees and partners the direction and future of MySQL.

Monday, November 10, 2008

Sun CEC 2008: November 10, 2008

This morning started with a nice breakfast and the opening general session. Key speakers include:
  • Daniel J. Berg - CTO Global Sales and Services and VP of EM Systems Engineering
  • Peter Ryan - Execute VP Global Sales and Services
  • Jonathan Schwartz - CEO and President
  • Hal Stern - Senior VP Systems Engineering
Highlights from the General Session

Open source is disruptive technology. Open source is putting pressure on proprietary companies.

Sun is almost a cult versus just a company. Today, Sun has a great story with open source. Customers can achieve tremendous savings by using Sun open source solutions.

Monetization of MySQL acquisition
Very important for Sun to be able to sell out of their traditional base. MySQL opens tremendous new opportunities for Sun. From Eric Schmidt (CEO at Google), "When you look at Google, our products are our ads". At Sun, storage, ZFS, Java, MySQL and their incredible popularity are ads for Sun. An extremely large customer said the proprietary vendors are absolutely killing their IT budget, so they are moving to MySQL to change their history of paying unbelievable amounts of money to proprietary vendors. MySQL is constantly proving their ability to disrupt the industry by saving customers large amounts of money.

Takeaway messages from Jonathan:
  • "Please have fun when you come to work."
  • "Be active with customers about our products."
  • "Now is the time to be talking to customers about what Sun is doing."
Quote: "At Sun, We are innovators, we create the future. At Sun we are not bigger than our competitors, but we are smarter. Our flexibility and agility is a key. Our technicalese is our strength."

Sun does not have the resources and funds to do the massive marketing like IBM and HP. However, the large number of leads from MySQL and turning these leads into sales is a great opportunity for Sun. Part of Sun's future success is due to customers looking at Sun for innovation.

The Platform is a Service

Even in a down economy, there is growth. Cloud computing is one of those areas. Refactoring of applications, horizontal scaling, server consolidation, Web 2.0, SAAS, etc. are all key focus areas for customers. End users are becoming the developer. Facebook, Wikipedia, Twitter, Google analytics are generating a new level of data generation. Today there are 280 exabytes of data approximately with 10 times grown in next three years. One zetabyte will be added in next few years. Managing extremely large amounts of data is becoming a serious challenge for customers.

The Platform is a Service

Packaging this development environment is important. The platform is a service. Platform services are now being provided by large companies. Infrastructure and platforms are important services. Virtualization is a key for both of these. Virtualization will create new services.

Tuning MySQL, leveraging MySQL, LAMP, SAMP with Sun technology is important. Semi-structured data is exploding. We are moving to a new class of systems. High speed networking with large network storage is very important to customers. Sun's Open Storage solutions are going to change how the industry does business and how it transforms customers business. A simple Web 2.0 model, analytics, with extremely large data growth is a key for customers. "Join the Web 3.0 model". "Embrace the Could, make it real". Cloud computing is the future. Social networks are changing how companies manage their data. Four important areas:
  • Systems
  • Microelectronics
  • Software and Services
  • Cloud computing
The evolution of Second Life with Sun and customers is growing. Security around the server, the cloud and Second Life is a challenge for customers.

Sun's ipod?

One of the biggest frustrations of Sun employees is they feel that Sun does not put enough effort in marketing products. There was a lot of discussion on Sun's pespective on how to market Sun products and the role of marketing. When I was at Oracle World, one leading industry analyst told me "Sun's problem is they have great innovation no one knows about and they don't leverage".

What is Sun's ipod? Sun is not a consumer device company. The ipod is a great user device. It's changed how people listen to music. Matchbox, for a dollar allowed kids to have a great imagination experience. The book "Peak Performers" was mentioned. Sun needs to participate in the community to make customers understand how to leverage technology. This is the challenge for Sun.

"Knowledge is a. rare thing -- you. gain by giving it"

Sun needs to show customers how things should be done. Systems engineering and delivery needs to show best practices to customers. Ivan Sutherland and his love of technology was discussed. Ivan has one of my favoriate quotes, "Knowledge is a. rare thing -- you. gain by giving it". Charles Garfield, "People how do something are people that know what do do next". In this tuburlent environment, Sun need's to show customers what to do next.

From Hal Stern, "if you have a great idea, be aggressive, implement it." "Figure out what needs to be done and just go do it". "Courage is what it takes to overcome fear. Fear is perceived risk". "Share your ideas, take your ideas to the market". "It takes courage to challenge the market".

The following areas have been constantly highlighted: open source, networking virtualization and storage.

Second Life rocks at Sun CEC 2008

Second life is playing a key role at the Sun CEC. Keynotes, general sessions and great presentions are all occurring in second life. Second life is giving remote attendees a great live experience of the conference.

Hal Stern will come inworld at 1pm PT today, and 5:30pm PT with his avatar with a pressentation and slides specifically for the virtual audience. Here is the wiki

Sunday, November 9, 2008

Ty Valdez Presenting in Second Life - Understanding the Popularity and Growing Emergence of MySQL

Understanding the Popularity and Growing Emergence of MySQL

Friday, November 14, 2008 8:00 a.m. PST

MySQL is growing at an incredible rate. Daily downloads are 75,000 and growing. More and more organizations are expanding their use of this popular database. This presentation will discuss the growing emergence of MySQL in the database industry. Topics will include:
  • Key factors in MySQL's growing popularity.
  • Positioning MySQL against other databases.
  • Popular features in the MySQL database server.
  • MySQL Strategic directions.
The presentation will also discuss upcoming MySQL activities and direction in Second Life.

The Sun 2008 Customer Engineering Conference

I'm definitely looking forward to presenting the MySQL sessions here at the Sun 2008 Customer Engineering Conference (CEC). The conference is at the Paris Hotel here in Las Vegas. The conference starts for me today (Sunday, November 9) with a walk through from 5:00-6:30pm. All the training track managers need to go through the walkthrough. The welcome reception is then at the Paris, Pavilion/Hang Space from 6:00-8:00pm. I am definitely looking forward to the conference getting started.

Complements to Paul Gehring and his team. I think they did an excellent job with the walk throughs for the track managers. Well executed planning and organization meeting for conference.

The welcome reception was a lot of fun. Food was awesome and environment was very festive. Also got some cool chotski at the event. Kudos to Sun and vendors, getting cool chotski was appreciated at the open reception. Yes we do love da chotski!

Loved the new computer bag received for the conference. It's a real high quality bag, and since my old Sun laptop bag broke two weeks ago the timing was perfect. Appreciated getting the nice high quality bag instead of the cheap ones you sometimes get at some conferences.

The hotel rooms in the Paris hotel are fantastic.

Tuesday, September 2, 2008

Ty Valdez and George Trujillo presenting at Sun CEC in Las Vegas

Ty Valdez and George Trujillo will be delivering multiple training sessions on the MySQL database server at the Sun Customer Engineering Conference (CEC) in Las Vegas during the week of November 9th - 14th, 2008. Details of the presentations can be found at Key areas of presentation include:
  • Positioning MySQL and MySQL database installation
  • Understanding the MySQL architecture
  • Storage engines and table/index management
  • Client programs and MySQL Administrator
  • Starting, stopping and configuring the MySQL Server
  • Information_schema, administration logs and diagnostics
  • Locking and transactions
  • User management and security
  • Optimizing queries, database and the server
  • Character set support, scaling and miscellaneous
  • Backup and recovery

Wednesday, May 28, 2008

Installing MySQL on Solaris

In my Sun blog I have defined how to install MySQL on Solaris using MOCA as a set of guidelines and best practices.

Tuesday, April 29, 2008

Sun Employees Connect Party

An excellent ending to a great educational day. The party was outstanding. I didn't realize I had so many dance moves left in me. Thanks to the people that showed me some cool dance moves that made me look good.

In previous times, people discounted the telephone, automobile and Internet as being toys and play things for people with too much idle time. The same people that laugh at how short sighted people were in the past to new technologies, are the same people that laugh at some of today's emerging technologies. Today's event brought together a lot of people that understand there are new and emerging communication vehicles that are changing the way people interact and will work in the future.

Today reminded me not only does the world not stand still, its accelerating. I've been to a lot of outstanding conferences in the last year such as Oracle Open World, Collaborate 2008 and the MySQL Users Conference where I met a lot of outstanding people and exchanged a lot of ideas. Today's Sun Employees Connect reminded me how fast things change and I'd better maintain the eye of the tiger to stay on the leading edge. I can think easily of ten conferences I would like to attend before the year is over. Java One, ODTUG, BEA and a few gaming conferences are at the top of my list.

Whew, what a long and fruitful day ...

Sun Employees Connect: An excellent day at Sun

I really enjoyed the Sun Employees Connect event. Sun executives such as Jonathan Schwartz, Martin Mickos, Rich Green, Don Grantham, John Fowler, Karie Willyerd, Hal Stern, Lin Lee shared ideas, perspective and direction for the organization. Sun's innovativeness and strategic directions make it a lot of fun to go to work everyday. I really felt a lot of the same closeness and willingness to share with the employees that I felt about the MySQL culture. I personally was really motivated to get more involved in Sun activities in and out of work after hearing all the speakers.

The work of Fiona's team and all the volunteers made for a great event. Their outstanding efforts were greatly appreciated. Everything was an incredible amount of fun and a very unique educational opportunity. The things I learned today, the networking connections I made and the realization of emerging technologies made it a unique learning experience. I spent way to much time in the building workshops but they were a lot of fun. I wanted to go to Racers Island and race cars but I had too much fun building things. Thanks Whoops!

Hats off to everyone for putting on such a great event!

Tuesday, April 22, 2008

MySQL Users Conference 2008

My wrap up on the MySQL Users Conference 2008:
  • All the rooms were filled for almost all presentations.
  • Any presentations on Falcon, new InnoDB plug in and Maria were packed. The race is on! Falcon drew first blood by being available in the MySQL 6.0 release but the new features in InnoDB look very good.
  • Performance tuning presentations were SRO.
  • I found all the presentations on the query cache, Innodb, and Myisam to be excellent. They all had little tidbits and recommendations that were very useful.
  • I was very impressed that all of my students I seen at the conference were very happy about their MySQL projects.
  • Birds of the Feather were the best BOFs I've ever seen put on at a conference.
  • Great diversity in the presentation topics.

Takeaway thoughts after the conference:
  • Like all database server environments tuning is a high priority for everyone.
  • Data warehousing in MySQL is gaining strong momentum.
  • Customers are using MySQL in ways I never imagined.
  • Lots of enthusiasm for MySQL at the conference.
  • I would not be surprised to see the size of the conference double for next year.
  • I thought the conference had a high ROI for attendees.

Wednesday, April 16, 2008

MySQL Users Conference - Wednesday

Today there are a lot of presentations that stand out. They include:
  • Roland Bouman - Information_schema presenations.
  • Tobias Asplund and Jay Pipes - MySQL Performance.
  • Tom Hanlon - Benchmarking and Monitoring.
  • Balint - Deadlocks, Wait Timeouts and Other Transactional Issues.
  • Grimmer - MySQL Backups using LVM Snapshots.

MySQL Users Conference

It's great seeing all the excitement and enthusiasm at the MySQL conference. From my perspective some of the key highlights from the first two days include:
Monday - Memcache - A big hit with a lot of interest.
Tuesday: Top Highlights
MÃ¥rten and Jonathan's keynotes.
New features in InnoDB - Ken Jacobs showed a number of new features in the new alpha release of InnoDB that really stood out. It's a plug in that needs to be installed in a 5.1.23 or greater release of MySQL. Rebuilding of indexes and performance enhancements definitely will make it worthwhile to look at these features in more detail.
  • Fast index creation without copying data.
  • Data compression.
  • New INFORMATION_SCHMEMA objects for compression and locking.
  • New row format to support long BLOB, TEXT and VARCHAR columns out of line.
  • TRUNCATE TABLE recreates the .ibd file.
  • More dynamic features with innodb_file_per_table.
  • INNODB strict mode.
There were also some excellent presentations on replication and performance. The technical birds of a feather presentations were also very cool.

The competition between InnoDB, Falcon and Maria has definitely stepped up. This competition will be a big win for the user community.

Saturday, April 12, 2008

MySQL Users Conference 2008 - Getting Ready

The MySQL Users Conference is just about to start. With MySQL now part of Sun, it is infusing a lot of energy and enthusiasm into MySQL and the conference. This is shaping up to be the best MySQL conference ever. If this is your first conference, here are my top 10 things I recommend you do to get ready for the conference:

1) Solidify your personal schedule and set backups in case a room is full for a presentation.

2) Plan on spending time in the vendor booth area, plan to ask experts some good questions. Leverage your time there.

3) What is your networking game plan? One of the key benefits is to network at the conference. What are some good things to ask other people while you are there. Try to meet as many people as you can.

4) Look at all the breakfast and evening events. Plan ahead for activities.

5) Have your business cards and other information ready.

6) Maximize attending presentations: Download presentations in advance so you can ask more detailed questions during the presentation. Make sure you check the daily agenda updates. There are always cool things added at the conference.

7) Meet instructors that are part of the MySQL education team. A very cooool group! Tobias, Glynn, Sarah, Kai, Morgan, David, Steve, Max and Tom. You all rock!

8) Read some conference blogs to make sure you are in the loop at the conference.

9) There are some very hot topic areas. Some of them include:

  • Memcache
  • DBRD and Heartbeat
  • Falcon and Maria
  • Enhancements to InnoDB
  • Learning internals
  • All the software available for MySQL The hot area seems to be data warehousing.

10) Introduce yourself to peers, presenters and conference volunteers. They all want to make sure you have a great time.

One more for good luck: Bring an extra bag or suitcase to bring additional things back from the vendor booths, etc.
See you there!

Friday, March 28, 2008


DBAs are always try to determine the best way to manage their storage for InnoDB. The three main options include:
  1. Having one shared InnoDB tablespace data file.
  2. Setting up individual files per InnoDB table.
  3. Setting up a shared tablespace across multiple files.
Option 1: Having one shared InnoDB tablespace data file.
This is fine if you have a simple and small MySQL database. Great for new DBAs to get comfortable with managing MySQL storage.

Option 2: Setting up individual files per InnoDB table.
I like this option when I need to create large transaction tables. This option works well with partitioned objects. Separating your core tables offers more flexibility in administration, backup and recovery and from a storage perspective makes good common sense. I however, do not like using this for all of my InnoDB tables. The more individual files I have to manage the more a DBA will get nickel and dimed from an administration perspective.

Option 3: Setting up a shared tablespace across multiple files.
I like this option because this gives me more flexibility in separating out my I/O if I do not have a storage array doing the striping for me. This allows me to get a lot of my core tables and separate them from other tables by defining their storage in separate data files where I control their location by defining the path of the tablespace data files.

Obviously having a storage array that does your striping and mirroring makes disk I/O management for databases a lot easier. :)

Tuesday, March 25, 2008

Top Ten DBA Interview Questions

I'm often asked what interview questions should be asked of a new DBA you are considering to hire. Mistakes in a DBA hire can cost an organization a lot of money and hurt morale. There are a lot of factors that determine how well a DBA will fit into an environment. I thought I would share some of the things I consider when I interview a new DBA. These questions can be asked to any type of DBA (MySQL, Oracle, SQL Server, DB2, ..).

Questions you have to answer for yourself before interviewing a new DBA include:
  • What skill sets are you looking for in a DBA? What skills are need to have and which are nice to have?
  • How much time do they have to get up to speed?
  • How important is it you hire the right person? (Or what investment are you willing to make to hire the right person).
When interviewing a potential new DBA it is important to understand:
  • What is their technical depth and experience.
  • What type of environments have they worked in.
  • How well do they interact with customers.
  • How well will they fit in to the team and the company environment.
  • What techniques and methodologies do they use to manage databases.
  • How will they impact the current database management practices.
The type of DBA you are trying to hire greatly impacts how you interview the candidates. I don't care to ask a lot of syntax questions or a lot of technical minutia. I want to understand:
  • The depth and breadth of their knowledge.
  • Their methodology and approach to managing databases.
  • How they solve problems.
  • Their commitment and work ethic.
I could write a white paper on explaining the rationale behind each of these questions, but I'll cut to the quick and give a ten step process to interview a new DBA candidate. These questions assume you are looking for a production DBA. If your organization is new and you do not have the expertise to hire the right candidate, you need to hire a consultant that can help your organization through this process.
  1. What are four errors found in an alert (error) log that can ruin a DBA's appetite and how does the candidate avoid them?
  2. What are four performance bottlenecks that can occur in a database server and how are they detected?
  3. Ask them to explain their philosophy for database management and how they implement best practices and guidelines. This should include questions related to the configuration you are running (replication, cluster, OLTP, data warehouse, etc.).
  4. What area of database internals do they understand the best that helps them troubleshoot problems. Ask them to explain this area so you can get an understanding of their depth of knowledge in this area.
  5. Get ten common types of trouble tickets DBAs have solved in your organization and ask them how they would solve them.
  6. Get five difficult problems your DBAs have had to solve and ask them how they would solve them.
  7. Ask them to explain five things they have learned recently that makes them a better DBA and where they learned them.
  8. Set up a simple database environment. Ask them to use two different methods to back up the database. Break the database. Have them recover the database using the backups they created.
  9. Ask them to give a detailed explanation of setting up an environment for disaster recovery or an upgrade for an important database.
  10. Have them write or build a few things in the sample database to demonstrate their knowledge and experience. This should include typical tasks they will be expected to perform to manage the environment.

I like a three or four interview process. Each interview should only leave the candidates that meet the profile of the type of person you want to hire.
  • First interview I like to get a baseline if they match the resume they sent and do they meet the profile of what you are looking for.
  • Second interview I like to make very technical to see if they meet the technical profile of what you are looking for. Make sure you make this sufficiently in-depth for the position you are hiring. There should be no doubt at the end of this interview as to whether they have the technical skills or not for the position you have open.
  • Third interview I like different members of the team determine how well they will fit into your environment and then perform one more level of technical evaluation to make sure you have the right candidate.
Have fun and good luck. What are some of your favorite questions?

Sunday, March 23, 2008

Setting up Apache and PHP on Mac OS Leopard

Apache is a fairly straight forward setup if you use some utility or distribution to help you. A manual installation will take more time. You can Google installation instructions or use a utility like XAMPP to simplify the installation. XAMPP is a distribution that will walk you through an Apache, MySQL, PHP, phpMyAdmin installation. Once you get comfortable with XAMPP these software components can be installed on a Linux or Windows platform in a few minutes.

I'm running Mac OS (Leopard) which comes with a built-in Apache web server (2.2.6) and PHP (5.2.4) preinstalled. On Mac OS (Leopard), perform the following steps to get the Apache Web Server (AWS) and PHP up and running in minutes.
  1. Go to System Preferences. Under Internet and Network select the Sharing icon.
  2. Select the checkbox under Web Sharing. It will return your computer's website URL (IP address or host name) (i.e. This will also start AWS.
  3. Open up a browser and type your computer's website URL displayed in the Web Sharing page in System Preferences. After typing this URL in a browser. You should get a browser page that shows you your Apache web server is up and running. This is too cool. Mac OS's built in Apache web server takes just a few clicks to have Apache up and running.
  4. Once you've confirmed the Apache web server is up and running, type the httpd -V command to get information on your Apache installation.
Running httpd -V.
$ httpd -V

The httpd -V command returns important information
  • The Apache Web Server version you are running.
  • The location of the Apache configuration file (httpd.conf).
  • The location of the access and error log file.
  • Apache configuration options.
Example snippet of output from the httpd -V command:
Server version: Apache/2.2.6 (Unix)
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
-D DEFAULT_ERRORLOG="logs/error_log"

With Mac OS (Leopard) you can find the access_log and error_log files in the following location:

Turn on PHP 5 on Leopard by uncommenting the following line in your httpd.conf file using a text editor.
# LoadModule php5_module libexec/apache2/

AWS needs to be stopped and restarted for the changes to take effect. Starting and stopping the AWS can be done through the System Preferences | Sharing window. Clicking the Web Sharing checkbox can be used to stop and start Apache. Restart the Apache Web Server so the configuration changes take effect.

Create a PHP configuration file. Then change the error reporting option to display all errors. Instructions:
$ cd /private/etc
$ sudo cp php.ini.default php.ini
$ sudo vi php.ini
Change the error reporting line using vi or a text editor to display all error messages.
error_reporting = E_ALL & -E_NOTICE
error_reporting = E_ALL

Test your PHP configuration
  1. In a browser type your computer's website displayed in the Sharing page. This should launch Safari and display an Apache web page.
  2. Create a page called test.php (lots of examples on Google). Save it in the directory Macintosh HD:Library:WebServer:Documents.
  3. Go to your browser and type your computer URL with a test php (lots on Google) program. If you get the PHP info your configuration is working.

Apache and PHP should now be up and running on your Mac. Have fun!

Saturday, March 22, 2008

Sun - A very positive beginning

During the last month, I have had the opportunity to be involved in three MySQL training classes that have included Sun employees. Without exception, every Sun employee has shown a lot of enthusiasm about the potential for MySQL and Sun. Every Sun employee has gone out of their way to welcome MySQL employees. There have been a lot of excellent discussions on the potential of Sun and MySQL technology and what they potentially can do together. I wish we could have podcast some of these discussions. The sharing of ideas and the collaboration was fantastic. Getting a number of knowledgeable people in database, messaging, identity management, storage, cluster and application server technology in one room and the exchange of ideas was a great experience. Thanks Pedro, Maggie, Walter, Ram, Andrea, Malek, Mitch, Seumas and everyone for all the positive energy and warm welcome!

Next week the Sun on-board process begins for most U.S. MySQL employees. Meeting a number of fantastic people at Sun is definitely a great beginning to the Sun experience.

Sun - A very positive beginning

During the last month, I have had the privilege of being part of three MySQL training classes in a row that have included Sun employees. I can't understate how great the Sun employees have been in welcoming MySQL employees to Sun. Without exception, Sun employees have stated their excitement in the possibilities and potential of MySQL and Sun. It's been great to see how every Sun employee I've met has gone out of their way to make MySQL employees feel part of Sun. To Pedro, Maggie, Walter, Seumas, Mitch and everyone thanks for all the positive energy and the warm welcome!

Next week begins the Sun on boarding process for most U.S. MySQL employees. Meeting a number of great people at Sun is definitely starting the Sun journey on a very positive note.

MySQL, Blade Servers and Storage

When people think of MySQL they normally think of MySQL running across multiple Intel servers running Red Hat, SuSE or Windows. This is great for small and medium sized organizations. However, adding a number of Intel boxes and dealing with heating, electricity, power and storage is not an ideal scenario for larger organizations.

As MySQL grows in popularity, I believe more organizations are going to look at using blade servers and storage arrays to manage MySQL databases. Will Sun put together a solution that can generate enthusiasm for using Sun Blade Servers and Sun storage solutions. It's kind of funny that I say this. With over twenty years of database and Unix administration experience, to me there is no better operating system for running database servers than Solaris. My personal perspective is that since the days of SunOS, Sun Microsystems has by far the "best" operating system for databases. Does that matter in today's world? I'm not sure.

When you look at Solaris compared to Linux, Solaris is by far the better operating system in my humble opinion. Yet, that does not seem to matter. Linux provides the core functionality people are looking for at the fraction of the cost, so Linux is by far more popular. Actually, this is one way MySQL is gaining market share compared to other proprietary databases. MySQL has the core functionality that people want, at a fraction of the cost of proprietary systems. Other database vendors add more and more functionality, yet this new functionality does not impact the growing popularity of MySQL. Cost is not the only reason MySQL and Linux are popular, yet cost is a strong factor in the popularity equation.

Can Sun package a complete solution with MySQL that can excite the IT industry? This may be one of the key questions for 2008.

MySQL Growth in the Database Market

MySQL can be used 64,000 different ways with just about any type of database. Despite this flexibility, here is how I see the growth of MySQL in the database market:
  • Web-based applications are an area of strength for MySQL. MySQL will continue to grow and remain popular in this space.
  • Data Warehousing is the big potential growth area for MySQL. In the next few years it will be very interesting to monitor MySQL in the data warehousing market. Fast reads, large horizontal scalability and strong yet relative low-cost solutions make MySQL ideal for data warehousing.
  • OLTP is an area that MySQL works well in for small and medium sized solutions. MySQL version 6 is where MySQL can grow significantly in the OLTP market. The Falcon (OLTP) storage engine, designed for modern large memory and multi CPU systems, increased on-line functionality and improved high availability offers significant potential for MySQL in the area of OLTP applications. MySQL version 6 will make MySQL more popular in the on-line Internet database market. You can also expect Oracle (InnoDB) and other 3rd party companies to also offer new scalable OLTP storage engines in the next few years.
The future looks bright for MySQL. It's interesting to look at the database market. It is Oracle and MySQL that are growing in popularity that can be used in multiple platforms.
  • DB2 is typically an IBM solution.
  • SQL Server is typically a Microsoft or low-cost simple solution.
  • Oracle and MySQL are the two database solutions that are popular with multi-platform solutions. HP-UX, AIX, Solaris, Red Hat, SuSE , Windows, etc. are all strong and popular solutions for both Oracle and MySQL. It is only Oracle and MySQL that continue to remain popular on multiple platforms.
Oracle will continue to dominate the large aircraft carrier database solutions and the business applications market. SAP will continue to try and use DB2 and SQL Server with their business applications and use Oracle only when they have to.

As for the web-based applications, small/medium data warehousing applications and small/medium OLTP environments, MySQL will continue to grow in popularity.

Data Warehousing - The Next Step for MySQL

MySQL excels as a strong solution for web-based solutions. MySQL’s extremely fast read rates and ability to scale horizontally with replication makes MySQL a popular low cost of ownership platform for web-based applications. The next area I expect MySQL to encounter significant growth is in the data warehousing market. MySQL’s fast reads and horizontal scalability makes it a strong consideration for the following environments:
  • Real Time and Archive Data Warehouses
  • Data Marts
  • Large Reporting Systems (DSS)
There are a number of strong solutions in the area of BI reporting, Analytics and data integration solutions that can be used with MySQL. Using MySQL for a data warehousing solution allows an organization to build small and medium sized data warehouses without the large startup costs of proprietary databases as well as the extremely expensive BI and data integration solutions that come with proprietary databases.

They say the number one reason restaurants fail is not being able to overcome large startup costs. Using MySQL as the database platform for small and medium data warehouses allows an organization to deliver a strong data warehousing solution at a fraction of the cost of proprietary solutions. This is why I expect data warehousing to be an area of significant growth for MySQL databases in the next few years.

Wednesday, March 12, 2008

Important URLs for Sun and MySQL Documentation

MySQL Documentation:

Sun Documentation:


Resource Pools:

ZFS (New File System):

SMF (Service Management Facility):

Very cool class in San Francisco

It's an incredible privilege to be able to teach other people. I've always found that knowledge is like love. No matter how much you give you always get more back.

I'm teaching a class this week in San Francisco to a very cool group. Students are from all over the world: China, Malaysia, Germany, Spain, Italy, India and the U.S. It is great to have people from all over the world and we all speak the same language, databases. We're all having a lot of fun singing "Kumbaya". :)

So far the top rated restaurants among the class this week include:
  • Colibri
  • House of NanKing
  • Great Eastern Restaurant
  • Sultan
  • Puccini and Pinetti's
  • Magnolia Pub and Brewery

MySQL and Sun

I don't know if Sun still offers those Sun leather jackets, they were pretty cool. I need to figure out how to get one. Sun areas of interest for MySQL DBAs include:
  • Sun Clusters and how they work with MySQL Cluster.
  • MySQL work and Sun Zones.
  • MySQL works and ZFS.
  • SMF.

Books for new MySQL DBAs

  • These are two books I would highly recommend for new MySQL DBAs. Both are very well written with a nice writing style. I really like the writing style of the person that wrote the Head First SQL class.
    • Head First MySQL
    • MySQL 5.0 Certification Study Guide

    Wednesday, March 5, 2008

    MySQL - An IT Tipping Point

    A ''tipping point'' is a concept, product or idea that becomes a hot commodity that attracts everyone's attention, interest or inspiration. There are always specific reasons and factors that are not easily identifiable why one product becomes a tipping point and others do not. Products not considered a tipping point usually never become a tipping point and ofter never understand why they didn't. There are tons of examples of this. VHS versus Beta, MP3 players versus iPods, Blue Ray versus HD DVD. The list is endless.

    MySQL is "the" hot tipping point product in the IT industry. MySQL is an incredibly popular open source part of the LAMP stack. There are additional open source products like PostgreSQL, MaxDB, Firebird, Ingres, Apache Derby, etc. No database in the industry is creating the buzz, excitement and interest that MySQL does. People can debate the feature/functionality, performance, etc. between the different databases. Make any comparison you want, none of the other databases that are compared to MySQL are going to be the "tipping point" MySQL is.

    MySQL is a very unique organization with employees that believe in disrupting the industry with innovativeness and new ways of doing things. MySQL employees have been raised with the concept of open source, sharing and caring about their contributions to open source. I do not believe their are many companies in the world that have the "global team" concept that MySQL does. I interact with MySQL team members in Sweden and Germany as easily as team members in my home city. It is the uniqueness of the MySQL employees that are creating the tipping point.

    Web 2.0 environments are increasing exponentially in popularity and MySQL is in the center of the storm of this exciting growth. MySQL has the potential to be the center of innovativeness in Sun the way NeXT was the center of innovation in Apple. Sun has a very powerful engine for future growth in MySQL. There is one thing MySQL has that no other database has. It has the tipping point.

    Installing MySQL Administrator on Linux

    Installing the MySQL GUI tools are pretty easy on Linux (Fedora - 2.6.18-1.2798.fc6) but there are a few prerequisites for setting them up. The following listed RPMs are required. I did a google search and then performed a quick download of them.
    • libsigc++20-2.0.6-1.i386.rpm
    • gtkmm24-2.8.5-1.i386.rpm
    Load the RPMs. MySQL Administor is loaded in /usr/bin by default.
    # rpm -i libsigc++20-2.0.6-1.i386.rpm
    # rpm -i
    # rpm -i gtkmm24-2.8.5-1.i386.rpm
    # rpm mysql-gui-tools-5.0r12-1fc5.i386.rpm
    # rpm mysql-administrator-5.0r12-1fc5.i386.rpm

    Go to the Desktop Applications Menu and select the Programming Tab. You will see the MySQL Administor Icon. Select this icon and it will startup up MySQL Administrator in a windows environment. Then have fun! :)

    Sunday, March 2, 2008

    MySQL Priority Poll

    This poll did not get a lot of voters but I thought I would post the results to show you the priority of the individuals that did vote.

    Poll: What is your highest priority with MySQL?
    • Performance Tuning 20%
    • Backup and Recovery 20%
    • Monitoring and Management 16 %
    • High Availability 16%
    • Scalability 12%
    • Storage 10%
    • BI and Reporting 3%
    • Business Strategy 3%

    Choosing a MySQL Configuration Strategy

    MySQL configurations cover the range from developers installing a simple MySQL database for a LAMP application to the largest Internet companies using MySQL to deliver web content.
    There are two different profiles that cover this range for installing, configuring and managing MySQL database servers:
    1. Profile 1: Individuals or small organizations that wants to use MySQL to create a simple database for web applications and the LAMP stack.
    2. Profile 2: Individuals or organizations that are looking at creating larger MySQL databases or may be creating a large number of MySQL databases.
    Profile 1:
    For this profile, the person can be a non-DBA. This profile can use the default install using the Windows Installation Manager or the Unix or Linux RPMs. The GUI interfaces will take you through a very simple install. MySQL database servers do not take a lot of resources to run. The template files (my.small, my.medium, my.large) can show startup files that contain larger configurations. This is a simple environment to install and manage. I have seen non-DBAs and developers use this environment for years and it works great for them.

    This type of DBA is typically using some simple GUI interfaces, doing backups with mysqldump and taking a simple approach for managing MySQL databases. MySQL's basic configuration can make it very popular for the small and medium sized organization.

    This profile involves more complex and larger MySQL databases. This environment often benefits from installing and configuring using best practices. This environment is more successful with someone that has DBA experience or training. Implementing a MySQL environment with the MySQL Optimal Configuration Architecture (MOCA) where a DBA organizes a database for performance, high availability, ease of management becomes important for this environment being successful.

    Dependent on the size and complexity of the MySQL environment, the DBA for this environment may be more concerned with one or more of these areas:
    • How the MySQL servers will be monitored and managed. Using the MySQL Enterprise Monitor, open source monitors or 3rd party monitors becomes important.
    • What backup strategy to use: Snapshots, InnoDB Hot Backup, Replication, etc.
    • High Availability (MySQL cluster, other clustering strategies).
    • How to balance I/O by spreading data across multiple disks, storage arrays, etc.
    • Performance Tuning.
    • The establishment of database standards, guidelines and best practices (MOCA).
    • Change control.
    • Having to much coffee.
    • Managing test, development and production databases. Developing rollout strategies.
    • Security, auditing, Sarbanes-Oxley, COBIT, ITIL.
    • Information Lifecycle Management
    These two profiles show two ends of the spectrum for MySQL database administration.

    Friday, February 29, 2008

    Best Environments for Running MySQL

    Its interesting when you look at MySQL database environments. Extremely popular in the MySQL world is to use commodity hardware and implement the LAMP stack.  Smaller projects and startup companies love this environment.  A simple example, a company needs to set up a web application, they buy some commodity hardware, set up replication and scale horizontally.  Everybody loves this and it works great.

    This environment requires floor space, cooling, electrical outlets, etc.  As new MySQL database servers get built, the environment needs to consider how this database environment will scale.  Organizations may take a step back and start looking at scaling with blade servers or large host systems to run large numbers of MySQL databases.

    Database servers are I/O intensive.  Growing with cheap disks does not always scale with systems that have large I/O requirements.  Striping and mirroring starts to become more important.  So storage scalability and more expensive storage solutions become a consideration as I/O increases.

    It will be interesting as Sun leads MySQL into more enterprise environments how the hardware and scalability strategies will evolve.

    Thursday, February 28, 2008

    Learning MySQL DBA Best Practices

    It is a challenge for new MySQL DBAs to learn best practices for managing database servers. There are no books that teach you everything you need to know. Key knowledge areas new MySQL DBAs need to learn:
    • Best practices for installation and configuration.
    • How to monitor and manage a database.
    • How to monitor for tuning.
    • Best practices for backup/recovery.
    • Best security practices.
    • What audit controls need to be put in place.
    • Disaster planning.
    • Growth projections and scalability planning.
    • Change management.
    Sources I would recommend a new DBA start with:
    • Google - do searches on best DBA practices, etc.
    • Read information on the MySQL Optimal Configuration Architecture (MOCA) and the Optimal Flexible Architecture (OFA - Oracle related). Both give examples of things to consider when planning databases.
    • Go to conferences and download presentations from previous conferences.
    • Find a mentor.
    • Larger environments look at Sarbanes-Oxley, COBIT and ITIL in terms of best practices for managing IT infrastructures. Waters get deep here for new DBAs.

    Tuesday, February 19, 2008

    Maximize your ROI at the MySQL Conference

    The MySQL conference is coming up. It's one of highest ROIs you can get for your training dollar. Just like anything else you do that is successful, plan on how you can maximize your attendance at a conference.

    If you don't attend conferences on a regular basis here are a few things you can do to maximize your experience:
    1. Volunteer! Best way to meet new people and feel a part of the conference.
    2. Join! There are often Special Interest Groups (SIGs) or other groups within a conference that try to bring people with common interests together.
    3. Introduce yourself! Try to meet as many people as you can at the conference. Challenge yourself to meet as many people as you can as possible. Ask them questions like: What's the best presentation you've attended so far? Are there any speakers you really like and would recommend to someone new to a conference attend? What area are you focusing on at the conference? A conference is the best way to work on your communication and networking skills. Buy a book on networking and try some of the techniques. If you are new to the conference no one knows you, what do you have to lose? Ask them about what environments they are running? What challenges are they having with their technology?
    4. Attend get togethers! Every conference has breakfast, unconference and birds of a feather meetings and other ways to network. If one doesn't work out, don't get discouraged. Remember you don't know anyone there how can you make a mistake.
    5. Business cards. Bring business cards and everyone you meet give them a business card. Who knows, someone might even give you there card. :)
    6. Prepare! Get organized. There are tons of great books, blogs, and Internet information on 10 ten tips for introducing yourself, networking and socializing. Try them.
    7. Submit! Submit a presentation. Awesome way to expand your comfort level and for people to get to know you. Most important thing people want at a conference is to learn from other people's experiences. You don't have to be a top expert. Do not underestimate what you have to say?
    I consider myself a pretty social person. However, I remember when I first starting going to conferences it was pretty lonely. I wasn't comfortable walking up and talking to people. The first birds of a feather meeting I went to, I walked in the door, everybody looked up at me, I froze and I walked out. I realized I was too shy but was too embarrassed to walk back in. It can get really lonely if it seems everybody else knows each other.

    Since then I have ran different areas of a conference, been on expert panels, given key note presentations and been on board of directors for conferences. All of these things occurred because I was willing to push myself past my comfort zone and began to submit papers for presenting and to join different groups at conferences.

    Networking is always rated first or second in terms of benefits for people that attend conferences. If you would like to increase your networking skills I would recommend you read the book "Million Dollar Networking" by Andrea Nierenberg. This will give you a lot of great ideas, recommendations and things to say to greatly increase your networking skills. You are going to spend thousands of dollars to attend the conference, why not spend another $30 and maximize the networking you can do.

    Everybody attending a conference has been in your shoes. Go introduce yourself to volunteers or speakers. Ask them about ways to maximize the time at the conference and what speakers they like to see. All volunteers I guarantee you want you to have fun and enjoy the conference and they know what its like to go to a conference for the first time. Most importantly, find out if any MySQL instructors are around, they are some of the coolest, most enjoyable and high energetic people you'll find at the conference. :)