We were discussing the recommendations we issue each quarter
around MySQL and the question of using InnoDB plugin came up. We
usually follow Planet MySQL closely, so we read what the blogs
had to say and it was all good, but we decided to provide our
users some data of our own. We used our own sysbench
tests on to get the information we needed.
A Word About BenchmarksI don't trust most of the benchmarks that
are published online because they really apply to the use case of
whomever is writing the article. They are usually many factors
that can influence them and I find it difficult to apply them
as-is to our environment.
I do trust the benchmarks published online as a reference on how
to create and run our own benchmarks. So this article is based on
this premise. I recommend you to do your own homework to …
In The Doom of Multiple Storage Engines, Peter talks about how the storage engine concept of MySQL is usually spoken of in positive terms, but there are many negatives.
I have a hard time trying to figure out the deeper meaning behind Peter’s post, given that Percona writes a storage engine for MySQL, XtraDB. Does this mean that Percona will stop developing XtraDB? Does this mean that the Percona Server will diverge farther and farther away from MySQL so that they’re not compatible any more and migrating from MySQL to Percona Server is very difficult?
Or maybe it’s just that Peter is saying one thing and doing the opposite; which just seems wrong because that would be blatant hypocrisy on Percona’s part.
(This idea was a comment on the blog post but seems to be trapped in the spam filter, so I’m …
[Read more]In our March DBJ article we talked about some of the storage engines to choose from with MySQL. With it’s plugin storage engine architecture, you have a range of options. In our April article we continue to discuss a further selection of storage engines, and what features they offer to the DBA and database architect.
In this month’s Database Journal piece we look at the spectrum of MySQL storage engines available, and examine what some of their strengths and weaknesses are.
Configuring the InnoDB Plugin (1.0.6) is just as easy in the MySQL 5.1.43 release. There are a few subtle changes in the new release. Set the following parameters to configure the InnoDB plugin in 5.1.43. A few notes: Set the PLUGIN_DIR parameter to the location of the plugin libraries. Verify all the libraries listed below are in the PLUGIN_DIR directory. The PLUGIN_LOAD parameter needs to
As most of MySQL users, I have often ignored what I'd like to
call the minor storage engines. MYISAM, InnoDB and NDB
(aka MySQL Cluster) are well covered in several articles; but
what about engines like CSV or ARCHIVE? As part of some internal
projects, we have been playing around with these 2 with some
interesting results. On this article I'll concentrate on
CSV.
ScenarioCurrently we have a few servers that are storing
historical data that will eventually be migrated into Oracle. Two
things need to happen until we can finally decommission them: 1)
export the data to CSV so it can be imported in bulk into Oracle
and 2) keep the data online so it can be queried as needed until
the migration is finalized. I thought it would be interesting if
we could solve both issues simultaneously and decided to try the
CSV engine. Here's a description of the process.
Understanding CSV EngineThe CSV engine, as far as I can tell, was
and example …
I’ve been investigating a few different storage engines for MySQL lately, and something I’ve noticed is that they all list what they support, but they generally don’t say what they don’t support. For example, Infobright’s documentation shows a list of every data type supported. What’s missing? Hmm, I don’t see BLOB, BIT, ENUM, SET… it’s kind of hard to tell. The same thing is true of the list of functions that are optimized inside Infobright’s own code instead of at the server layer. I can see what’s optimized, but I can’t see whether FUNC_WHATEVER() is optimized without scanning the page — and there’s no list of un-optimized functions.
I don’t mean to pick on Infobright. I’ve recently looked at another third-party storage engine and they did exactly the same thing. It’s just that the docs I saw weren’t public as …
[Read more]I generally use the following MySQL INFORMATION_SCHEMA (I_S) query to Calculate Your MySQL Database Size. This query and most others that access the MySQL INFORMATION_SCHEMA can be very slow to execute because they are not real tables and are not governed by physical data, memory buffers and indexes for example but rather internal MySQL data structures.
Mark Leith indicates in his post on innodb_stats_on_metadata that Innodb performs 8 random(ish) dives in to the index, when anybody accesses any of SHOW TABLE STATUS, SHOW INDEX, INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.STATISTICS for InnoDB tables. This can have an effect on performance, especially with a large number of Innodb tables, and a poor ratio of innodb_buffer_pool_size to disk data+index footprint.
What is even more …
[Read more]The MySQL Innodb storage engine provides ACID compliance, the ‘I’ being isolation. There are four states defined in MySQL with the tx_isolation system variable, READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ and SERIALIZABLE.
Generally MySQL installations do not modify the default value of tx_isolation = REPEATABLE-READ, however I have seen with a number of clients the default value has been changed to READ-COMMITTED. When I attempt to identify the reason why, I have always received the same reason. Oracle uses a default transaction isolation of READ-COMMITTED. See how Oracle Manages Data …
[Read more]Mark writes Now we all need the storage-engine independent test suite. I could not agree more. I have made comments about this probably as early as 4 years ago, and both before and while working for MySQL Inc.
There is however a way to do it with the current mysql-test
syntax. While not ideal, it does actually work.
It took me like an hour to dig though old, old backup code, but I
found it.
The Test Case:
$ cat t/engine_agnostic.test CREATE TABLE i(id INT UNSIGNED NOT NULL); let $ENGINE=`select variable_value from information_schema.global_variables where variable_name='STORAGE_ENGINE'`; --replace_result $ENGINE ENGINE SHOW CREATE TABLE i;
The Test Result:
cat r/engine_agnostic.result CREATE TABLE i(id INT UNSIGNED NOT NULL); SHOW CREATE TABLE i; Table Create Table i CREATE TABLE `i` ( `id` int(10) unsigned …[Read more]