<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MySQL Expert &#124; MySQL Performance &#124; MySQL Consulting</title>
	<atom:link href="http://ronaldbradford.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ronaldbradford.com/blog</link>
	<description>Expert times and information on MySQL</description>
	<lastBuildDate>Thu, 26 Apr 2012 22:32:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Amateurs &#8211; They give us professionals a bad name</title>
		<link>http://ronaldbradford.com/blog/amateurs-they-give-us-professionals-a-bad-name-2012-04-26/</link>
		<comments>http://ronaldbradford.com/blog/amateurs-they-give-us-professionals-a-bad-name-2012-04-26/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 22:32:02 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[error log]]></category>
		<category><![CDATA[mysql upgrade]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3962</guid>
		<description><![CDATA[Any person with half a brain would see from the error messages below that the MySQL server is not operating optimally, or more specifically the MySQL upgrade has not completely successfully and let users can go happily use the website.  It amazing me when web hosting providers tell their paying client that an upgrade [...]]]></description>
			<content:encoded><![CDATA[<p>Any person with half a brain would see from the error messages below that the MySQL server is not operating optimally, or more specifically the MySQL upgrade has not completely successfully and let users can go happily use the website.  It amazing me when web hosting providers tell their paying client that an upgrade has been performed yet they did not have the intelligence to actually look at the error log for confirmation.  Got a mysql> prompt, it&#8217;s all good.  One of the first things I check is the error log. </p>
<p>When will people learn the MySQL error log is a valuable resource both for what it contains, and what it should not contain.</p>
<pre>
120426 17:36:00 [Note] /usr/libexec/mysqld: Shutdown complete

120426 17:36:00 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120426 17:36:00 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120426 17:36:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
120426 17:36:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120426 17:36:00 InnoDB: The InnoDB memory heap is disabled
120426 17:36:00 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120426 17:36:00 InnoDB: Compressed tables use zlib 1.2.3
120426 17:36:00 InnoDB: Using Linux native AIO
120426 17:36:00 InnoDB: Initializing buffer pool, size = 128.0M
120426 17:36:00 InnoDB: Completed initialization of buffer pool
120426 17:36:00 InnoDB: highest supported file format is Barracuda.
120426 17:36:00  InnoDB: Waiting for the background threads to start
120426 17:36:01 InnoDB: 1.1.8 started; log sequence number 232577699
120426 17:36:01 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
120426 17:36:01 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
120426 17:36:01 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
120426 17:36:01 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. Created with MySQL 50077, now running 50523. Please use mysql_upgrade to fix this error.
120426 17:36:01 [ERROR] mysql.user has no `Event_priv` column at position 29
120426 17:36:01 [ERROR] Cannot open mysql.event
120426 17:36:01 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.
120426 17:36:01 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.23-cll'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL) by Atomicorp
120426 17:46:01 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
120426 17:46:01 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
120426 17:46:01 [ERROR] Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50077, now running 50523. Please use mysql_upgrade to fix this error.
</pre>
<p>Some more light reading at <a href="http://ronaldbradford.com/blog/have-you-checked-your-mysql-error-log-today-2009-08-20/">Have you checked your MySQL error log today?</a> and <a href="http://ronaldbradford.com/blog/monitoring-mysql-the-error-log-2009-09-16/">Monitoring MySQL – The error log</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/amateurs-they-give-us-professionals-a-bad-name-2012-04-26/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I want a mysqldump &#8211;ignore-database option</title>
		<link>http://ronaldbradford.com/blog/i-want-a-mysqldump-ignore-database-option-2012-04-18/</link>
		<comments>http://ronaldbradford.com/blog/i-want-a-mysqldump-ignore-database-option-2012-04-18/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 19:25:10 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3955</guid>
		<description><![CDATA[While working with RDS and Google Cloud SQL I have come to realize that excluding the mysql schema from a mysqldump is important. However with many databases, the &#8211;all-databases option enables you only to select all or none.  There is however an easy solution to exclude one or more databases in mysqldump with this [...]]]></description>
			<content:encoded><![CDATA[<p>While working with RDS and Google Cloud SQL I have come to realize that excluding the mysql schema from a mysqldump is important. However with many databases, the &#8211;all-databases option enables you only to select all or none.  There is however an easy solution to exclude one or more databases in mysqldump with this little gem I created.</p>
<pre>
$ time mysqldump --databases `mysql --skip-column-names -e "SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','performance_schema','information_schema');" >` >/mysql/backup/rds2.sql
</pre>
<p>An you can exclude as many schemas as you want.</p>
<p>I checked the mysqldump &#8211;help, there was no option in MySQL 5.1, asked a colleague just to be sure I wasn&#8217;t wasting my time, and it took all of 2 minutes to create and test a working solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/i-want-a-mysqldump-ignore-database-option-2012-04-18/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>When is a database schema not a database schema?</title>
		<link>http://ronaldbradford.com/blog/when-is-a-database-schema-not-a-database-schema-2012-04-18/</link>
		<comments>http://ronaldbradford.com/blog/when-is-a-database-schema-not-a-database-schema-2012-04-18/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 19:21:09 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3950</guid>
		<description><![CDATA[
mysql> show schemas;
+--------------------+
&#124; Database           &#124;
+--------------------+
&#124; information_schema &#124;
&#124; innodb             &#124;
&#124; mysql              &#124;
&#124; performance_schema &#124;
+--------------------+
4 rows in set (0.00 sec)


mysql> drop schema [...]]]></description>
			<content:encoded><![CDATA[<pre>
mysql> show schemas;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
</pre>
<pre>
mysql> drop schema innodb;
ERROR 1010 (HY000): Error dropping database (can't rmdir './innodb/', errno: 17)
</pre>
<p>This is an additional schema that is included in an AWS RDS installation.  You should not put directories in the MySQL data directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/when-is-a-database-schema-not-a-database-schema-2012-04-18/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An excellent conference (5 out of 5 stars)</title>
		<link>http://ronaldbradford.com/blog/an-excellent-conference-5-out-of-5-stars-2012-04-14/</link>
		<comments>http://ronaldbradford.com/blog/an-excellent-conference-5-out-of-5-stars-2012-04-14/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 22:20:46 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[effective mysql]]></category>
		<category><![CDATA[mysql conference]]></category>
		<category><![CDATA[percona live]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3947</guid>
		<description><![CDATA[I wanted to extend thanks as others have also about the excellent annual MySQL Conference, now a Percona Live event.  This was easily the best run, attended and energetic event in at least the past 3 years.  With over a 1000 attendees a well stocked exhibitors hall (and good involvement in the hall), [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to extend thanks as others have also about the excellent annual MySQL Conference, now a Percona Live event.  This was easily the best run, attended and energetic event in at least the past 3 years.  With over a 1000 attendees a well stocked exhibitors hall (and good involvement in the hall), and good talks; there was just a great community vibe.  To Terry, Kortney and all Percona staff involved, well done. The event ran on time, I personally did not see or hear of any issues. The only complaint was from many that wanted to attend multiple talks at the same time, another indication of the quality of speakers for the event.</p>
<p>Thank you to those that attended my two sessions on <a href="http://effectivemysql.com/presentation/explaining-the-mysql-explain/">Explaining the MySQL Explain</a> and <a href="http://effectivemysql.com/presentation/mysql-idiosyncrasies-that-bite/">MySQL Idiosyncrasies that BITE</a>.   Many people thanked me after presentations, along also with people coming up to me to say they appreciated the first book of the <a href="http://effectiveMySQL.com">Effective MySQL Series</a>.  My desires to speak and write are only for the benefit of the MySQL community to hopefully learn and appreciate how to best use MySQL.</p>
<p>It was of course great to see many MySQL alumni, and old friends I have seen since meeting at my first MySQL conference in 2006.   </p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/an-excellent-conference-5-out-of-5-stars-2012-04-14/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL now has two user conferences (*)</title>
		<link>http://ronaldbradford.com/blog/mysql-now-has-two-user-conferences-2012-04-05/</link>
		<comments>http://ronaldbradford.com/blog/mysql-now-has-two-user-conferences-2012-04-05/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 03:57:36 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[mysql connect]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Open World]]></category>
		<category><![CDATA[oreilly]]></category>
		<category><![CDATA[percona live]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3937</guid>
		<description><![CDATA[PC World has written a post with this title(*) about the upcoming MySQL Connect conference and references the Percona Live conference and an official Percona comment. As this is not syndicated in Planet MySQL I encourage you to read the full article.
This is the MySQL conference to get technical presentations by the many great Oracle/MySQL [...]]]></description>
			<content:encoded><![CDATA[<p>PC World has written a post with this title(*) about the upcoming MySQL Connect conference and references the Percona Live conference and an official Percona comment. As this is not syndicated in Planet MySQL I encourage you to <a href="http://www.pcworld.com/businesscenter/article/253342/mysql_now_has_two_user_conferences.html">read the full article</a>.</p>
<p>This is the MySQL conference to get technical presentations by the many great Oracle/MySQL technical staff  who will not be in attendance at <a href="http://perconalive.com">Percona Live</a>. There will also be a strong community presence in speaking at <a href="https://blogs.oracle.com/MySQL/entry/mysql_connect_save_the_date">Oracle Connect</a> in September.   While Oracle was organizing a dedicated MySQL event in April for the community with all vendors including Percona to replace the conference dropped by long term partner O&#8217;Reilly (kudos for many years of great events), Percona decided to go at it without including Oracle, the owners and developers of MySQL. The statement quoted in the PC World article regarding &#8220;lack of momentum around the [annual community] event&#8221; is clearly inaccurate and not a true representation of actual events.</p>
<p>It is difficult to keep up with all the community events Oracle is now running including multiple OTN MySQL Developer days per month across the US and Europe. I will be speaking at the upcoming <a href="http://sqlhjalp.blogspot.com/2012/03/otn-developer-day-mysql-in-nyc.html">OTN NY event</a> in April, the <a href="http://rmoug.org">Rocky Mountain Training Day</a> in May, and hopefully the <a href="http://sqlhjalp.blogspot.com/2012/04/mysql-innovation-day.html">MySQL Innovation day</a> in June.  Get the full list at <a href="http://mysql.com/news-and-events/events/">Upcoming MySQL Events</a>.</p>
<p>Indeed MySQL content and presentations have also been represented at Oracle Open World for a number of years. 2011 was a very large turnout and many MySQL presentations. As a senior consultant for MySQL Inc I manned a MySQL booth at OOW exhibition hall back in 2007, prior to both Sun and Oracle acquisitions.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/mysql-now-has-two-user-conferences-2012-04-05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TIMESTAMP data types and CURRENT_TIMESTAMP attribute</title>
		<link>http://ronaldbradford.com/blog/timestamp-data-types-and-current_timestamp-attribute-2012-03-16/</link>
		<comments>http://ronaldbradford.com/blog/timestamp-data-types-and-current_timestamp-attribute-2012-03-16/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 16:19:46 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[5.6]]></category>
		<category><![CDATA[current_timestamp]]></category>
		<category><![CDATA[timestamp]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3934</guid>
		<description><![CDATA[In the yet to be released MySQL 5.6.6 DMR, there has been a change to the restriction of just one TIMESTAMP column with the DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP syntax.  It is now possible for any TIMESTAMP to have either column defintion.
More information at http://dev.mysql.com/doc/refman/5.6/en/news-5-6-5.html
]]></description>
			<content:encoded><![CDATA[<p>In the yet to be released MySQL 5.6.6 DMR, there has been a change to the restriction of just one TIMESTAMP column with the DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP syntax.  It is now possible for any TIMESTAMP to have either column defintion.</p>
<p>More information at <a href="http://dev.mysql.com/doc/refman/5.6/en/news-5-6-5.html">http://dev.mysql.com/doc/refman/5.6/en/news-5-6-5.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/timestamp-data-types-and-current_timestamp-attribute-2012-03-16/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQL_MODE and storage engines</title>
		<link>http://ronaldbradford.com/blog/sql_mode-and-storage-engines-2012-03-09/</link>
		<comments>http://ronaldbradford.com/blog/sql_mode-and-storage-engines-2012-03-09/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 16:50:06 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[SQL_MODE]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3928</guid>
		<description><![CDATA[I was again reminded why setting SQL_MODE is so important in any new MySQL environment.  While performing benchmark tests on parallel backup features with a common InnoDB tablespace and per file tablespace, I inadvertently missed an important step in the data migration. The result was the subsequent test that performed data population worked without [...]]]></description>
			<content:encoded><![CDATA[<p>I was again reminded why setting SQL_MODE is so important in any new MySQL environment.  While performing benchmark tests on parallel backup features with a common InnoDB tablespace and per file tablespace, I inadvertently missed an important step in the data migration. The result was the subsequent test that performed data population worked without any issues however there was no data in any InnoDB tables. </p>
<p>These are the steps used in the migration of InnoDB tables from a common tablespace model to a per-table tablespace model.</p>
<ol>
<li>Dump all InnoDB tables</li>
<li>Drop all InnoDB tables</li>
<li>Shutdown MySQL</li>
<li>Change the my.cnf to include innodb-file-per-table</li>
<li>Remove the InnoDB ibdata1 tablespace file</li>
<li>Remove the InnoDB transactional log files</li>
<li>Start MySQL</li>
<li>Verify the error log</li>
<li>Create and load new InnoDB tables</li>
</ol>
<p>However, step 6 was not performed correctly due to a sudo+shell wildcard issue.  The result was MySQL started, and tables were subsequently created incorrectly.  What should have happened was:</p>
<pre>
mysql> CREATE TABLE `album` (
    ->   `album_id` int(10) unsigned NOT NULL,
    ->   `artist_id` int(10) unsigned NOT NULL,
    ->   `album_type_id` int(10) unsigned NOT NULL,
    ->   `name` varchar(255) NOT NULL,
    ->   `first_released` year(4) NOT NULL,
    ->   `country_id` smallint(5) unsigned DEFAULT NULL,
    ->   PRIMARY KEY (`album_id`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
<b>ERROR 1286 (42000): Unknown table engine 'InnoDB'</b>
</pre>
<p>However, because by default MySQL will fallback to the legacy default of MyISAM, no actual error occurred.  In order for this to produce an error, an appropriate SQL_MODE is necessary.</p>
<pre>
mysql> SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION';
</pre>
<p>A check of the MySQL error log shows why InnoDB was not available.</p>
<pre>
120309  0:59:36  InnoDB: Starting shutdown...
120309  0:59:40  InnoDB: Shutdown completed; log sequence number 0 1087119693
120309  0:59:40 [Note] /usr/sbin/mysqld: Shutdown complete

120309  1:00:16 [Warning] No argument was provided to --log-bin, and --log-bin-index was not used; so replication may break when this MySQL server acts as a master and has his hostname changed!! Please use '--log-bin=ip-10-190-238-14-bin' to avoid this problem.
120309  1:00:16 [Note] Plugin 'FEDERATED' is disabled.
120309  1:00:16  InnoDB: Initializing buffer pool, size = 500.0M
120309  1:00:16  InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
120309  1:00:16  InnoDB: Setting file ./ibdata1 size to 64 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Error: all log files must be created at the same time.
InnoDB: All log files must be created also in database creation.
InnoDB: If you want bigger or smaller log files, shut down the
InnoDB: database and make sure there were no errors in shutdown.
InnoDB: Then delete the existing log files. Edit the .cnf file
InnoDB: and start the database again.
120309  1:00:17 [ERROR] Plugin 'InnoDB' init function returned error.
120309  1:00:17 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120309  1:00:17 [Note] Event Scheduler: Loaded 0 events
120309  1:00:17 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.58-1ubuntu1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
</pre>
<p>NOTE: This was performed on Ubuntu using the standard distro MySQL version of MySQL 5.1.</p>
<p>As previously mentioned, SQL_MODE may not be perfect, however what features do exist warrant correctly configuration your MySQL environment not to use the default.</p>
<p>More Information.</p>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html">MySQL Reference Manual &#8211; SQL Modes</a></li>
<li><a href="http://ronaldbradford.com/blog/why-sql_mode-is-essential-even-when-not-perfect-2012-02-16/">Why SQL_MODE is essential even when not perfect</a></li>
<p>﻿﻿﻿
<li><a href="http://ronaldbradford.com/blog/why-sql_mode-is-important-2011-06-01/">Why SQL_MODE is important</a</li>
<li><a href="http://ronaldbradford.com/blog/why-sql_mode-is-important-part-i-2008-07-17/">Why SQL_MODE is important? Part I</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/sql_mode-and-storage-engines-2012-03-09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IOUC Leaders Summit Presentation</title>
		<link>http://ronaldbradford.com/blog/iouc-leaders-summit-presentation-2012-03-08/</link>
		<comments>http://ronaldbradford.com/blog/iouc-leaders-summit-presentation-2012-03-08/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 01:06:04 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3912</guid>
		<description><![CDATA[At the recent leaders summit of world leaders in Oracle, Java and MySQL user communities I gave a presentation on Why Upgrade to MySQL 5.5
This is a more high level overview presentation, specifically designed for Oracle resources with little to no knowledge about MySQL, however it provides a great management approach to the consideration of [...]]]></description>
			<content:encoded><![CDATA[<p>At the recent leaders summit of world leaders in Oracle, Java and MySQL user communities I gave a presentation on <a href="/mysql-presentations/WhyUpgradeToMySQL5.5.pdf">Why Upgrade to MySQL 5.5</a></p>
<p>This is a more high level overview presentation, specifically designed for Oracle resources with little to no knowledge about MySQL, however it provides a great management approach to the consideration of using the current MySQL GA version.</p>
<p>I have a more detailed technical presentation from last year on <a href="http://effectivemysql.com/presentation/reasons-to-use-mysql-5-5/">Reasons to Use MySQL 5.5</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/iouc-leaders-summit-presentation-2012-03-08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why SQL_MODE is essential even when not perfect</title>
		<link>http://ronaldbradford.com/blog/why-sql_mode-is-essential-even-when-not-perfect-2012-02-16/</link>
		<comments>http://ronaldbradford.com/blog/why-sql_mode-is-essential-even-when-not-perfect-2012-02-16/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 19:00:51 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[data integrity]]></category>
		<category><![CDATA[SQL_MODE]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3917</guid>
		<description><![CDATA[In a recent rant on Why I think SQL_MODE is useless&#8230;, I wanted to counteract this statement with why we MUST all use SQL_MODE, even with the inherit flaws.
The fundamental principle of a database is to restore and retrieve data. When I can insert data into the database and then I select this data it [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent rant on <a href="http://karlssonondatabases.blogspot.com/2012/02/why-i-think-sqlmode-is-useless.html">Why I think SQL_MODE is useless&#8230;</a>, I wanted to counteract this statement with why we MUST all use SQL_MODE, even with the inherit flaws.</p>
<p>The fundamental principle of a database is to restore and retrieve data. When I can insert data into the database and then I select this data it is different, this is fundamentally wrong. This is a loss of essential data integrity, something a database should NEVER do.</p>
<p>SQL_MODE solves the problem of &#8220;silent truncation&#8221; in most instances, and produces an all important error. As pointed out, the SQL_MODE has several limitations, however the benefits do out way the risks.  Quality control on source code can reduce the limitations, but no amount of coding can stop the CRUD that comes out of the database without some SQL_MODE settings.</p>
<p>I would ask two more important questions.</p>
<ol>
<li>How in the first place can such a critical feature of silent data truncation ever be permitted in MySQL? Who made that decision and why?</li>
<li>When is the owner of MySQL codebase realize this is rather ridiculous and enforce essential minimual data integrity that can be obtain with options including STRICT_ALL_TABLES, NO_ZERO_DATE, NO_ZERO_IN_DATE and NO_ENGINE_SUBSTITUTION.  </li>
</ol>
<p><b>References</b></p>
<ul>
<li><a href="http://effectivemysql.com/presentation/mysql-idiosyncrasies-that-bite/">MySQL Idiosyncrasies That Bite</a> which includes a detailed section on the importance of SQL_MODE</li>
<li><a href="http://ronaldbradford.com/blog/why-sql_mode-is-important-2011-06-01/">Why SQL_MODE is important</a></li>
<li><a href="http://ronaldbradford.com/blog/why-sql_mode-is-important-part-i-2008-07-17/">Why SQL_MODE is important? Part I</a></li>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/why-sql_mode-is-essential-even-when-not-perfect-2012-02-16/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Colorado MySQL Users Group Presentation</title>
		<link>http://ronaldbradford.com/blog/colorado-mysql-users-group-presentation-2012-02-16/</link>
		<comments>http://ronaldbradford.com/blog/colorado-mysql-users-group-presentation-2012-02-16/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 18:43:33 +0000</pubDate>
		<dc:creator>ronald</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[colorado]]></category>
		<category><![CDATA[indexes]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3908</guid>
		<description><![CDATA[In addition to speaking at RMOUG event in Denver, I also spoke today in Broomfield on &#8220;Improving MySQL Performance with Better Indexes&#8221;. 
This presentation included details on :

Effective examples of capture SQL via application logging and TCP/IP analysis necessary for identifying the best candidates. Slow is not always the best query to start with.
All the [...]]]></description>
			<content:encoded><![CDATA[<p>In addition to speaking at <a href="http://ronaldbradford.com/blog/mysql-security-essentials-presentation-2012-02-15/">RMOUG</a> event in Denver, I also spoke today in Broomfield on <b>&#8220;Improving MySQL Performance with Better Indexes&#8221;.</b> </p>
<p>This presentation included details on :</p>
<ul>
<li>Effective examples of capture SQL via application logging and TCP/IP analysis necessary for identifying the best candidates. Slow is not always the best query to start with.
<li>All the commands necessary to identify why you may need an index, how to create varying types of indexes, and how to confirm there true effectiveness.
<li>How the number of table rows and different storage engines can greatly effect the optimization choice and query performance
<li>The presentation shows how to determine/create and verify covering indexes for a single table example, a master/child example and a production 13 table join.
</ul>
<p>You can obtain the slides from <a href="http://effectivemysql.com/downloads/ImprovingPerformanceWithBetterIndexes.pdf">Improving MySQL Performance With Better Indexes Presentation</a>.</p>
<p><a href="http://www.meetup.com/Colorado-MySQL-Meetup-Group/events/47684892/">Event Details</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ronaldbradford.com/blog/colorado-mysql-users-group-presentation-2012-02-16/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

