Here at the MySQL Performance Blog, we’ve been discussing the several new features that MySQL 5.6 brought: GTID-based replication, InnoDB Fulltext, Memcached integration, a more complete performance schema, online DDL and …
[Read more]You probably ask yourself sometimes how you can boost MySQL indexes when you are working with BIG databases/tables.
Really the solution is here for a long time already. You can use SSD disks (also known as flash disks). These disks are not that big that traditional SATA hard drives but they provide a superior performance. If your database is rather big to be placed on SSD disk you can still
This is the low-level view of data dictionary language (DDL) operations in the InnoDB storage engine in MySQL 5.6. John Russell gave a more high-level view in his blog post April 2012 Labs Release – Online DDL Improvements. MySQL before the InnoDB Plugin
Traditionally, the MySQL storage engine interface has taken a
minimalistic approach to data definition language. The only
natively supported operations were CREATE TABLE
,
DROP TABLE
and RENAME TABLE
. Consider
the following example:
CREATE TABLE t(a INT); INSERT INTO t VALUES (1),(2),(3); CREATE INDEX a ON t(a); DROP TABLE t;
The CREATE INDEX
statement would be executed roughly
as follows:
CREATE TABLE temp(a INT, INDEX(a)); INSERT INTO temp SELECT * FROM t; RENAME TABLE t TO temp2; RENAME TABLE temp TO t; DROP …[Read more]
You often see databases with huge dynamic text fields, such as VARCHAR(255), TEXT, or as I recently was allowed to see the blanket use of LONGTEXT (max 4GiB) in order to be invulnerable from all contingencies. Things getting even worse when an index is used over such columns, because hey, there is an index. It makes things fast :-) Okay, jokes aside. Often you can save a lot of space and time, MySQL spends traversing the index when using a proper column type and index size.
You often see databases with huge dynamic text fields, such as VARCHAR(255), TEXT, or as I recently was allowed to see the blanket use of LONGTEXT (max 4GiB) in order to be invulnerable from all contingencies. Things getting even worse when an index is used over such columns, because hey, there is an index. It makes things fast :-) Okay, jokes aside. Often you can save a lot of space and time, MySQL spends traversing the index when using a proper column type and index size.
Today let’s talk about a resource very useful on MySQL, the
FullText Index and Search
This resource is very powerful, today on versions 5.5 is just
available to MyISAM engine, but, like we can see on MySQL FullText documentation, it will be
available also to InnoDB on MySQL 5.6
Usually when we want to search for a word or expression, we use
LIKE ‘%word%’, in case we are looking for more than one word
we use LIKE ‘%word1%word2%’, what many people don’t know is
for this kind of search is expensive and not optimized to our
MySQL, in this cases we solve our problems with FullText
Index
the syntax is easy, MATHC() … AGAINST (), where MATCH we
specified the name(s) of column(s) which we are looking for, yes,
we can look for more then one column, we just need all this
columns specified on our index …
451 Research has today published a report looking at the funding being invested in Apache Hadoop- and NoSQL database-related vendors. The full report is available to clients, but non-clients can find a snapshot of the report, along with a graphic representation of the recent up-tick in funding, over at our Too Much Information blog.
In my recent post on OR-conditions I made a mistake, and I
appologize for that. I made the statement that MySQL will only
use 1 index per statement, whatever you do.
This is no longer true, as a matter of fact, and that has been
the case since MySQL 5.0 and I should have checked. MySQL is
actually able to use index_merge. An explanation why I didn't
look for thi more carefully, yes an explanation, not an excuse,
is that the optimizer doesn't seem to want to use this very
often. Which is too bad.
So, with this in mind, and using the same table as in the
previous post, let's look at index_merge in action. Or possibly,
not so much in action. Let's recap what the table looks
like:
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`brand_id` int(11) NOT NULL,
…
About any product, be it computer hardware, software or any other product, has features that are annoying to some of us. But few products has so many features that are annoying to just about everyone as computer software. And among computer software, database software in particular seems to to have these features, which some people seems to like, and some just find annoying. And then there are features, or lack of them or implementation specific details that seems to annoy just about everyone. Things that work in a partuicular way because someone, somewhere, in some distant universe, had the notion that this was a good thing. Often features relating back to ancient times. And sometimes features that you just know work in a weirdo way because the person, if it was a person, figuring out the feature of the implementation of it, really must have been smoking something that is illegal in many parts of the world. Which is not to say that these features …
[Read more]The first EffectiveMySQL meetup will be held in NY on Tuesday 22nd March 2011 by Ronald Bradford. Details here
The title of the talk is “How better indexes save you money”. Saving money? Hey sure thing :) I’m in Ronald.
For those of you who do not know Ronald Bradford, he’s an Oracle Ace Director in the MySQL field, a long time community contributor and a MySQL expert.
I hope to see you at 902 Broadway New York, NY on Tuesday 22nd March 6pm.