Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

I am aware that there is a possibility to have a single database server with many tables/databases, and you can separate some of those tables/databases into separate disks. Lets say you have 5 tables/databases, and 5 drives. So you attach each table/database for a different drive. Thus increasing IO and everything else.

What is that technique called ?

I think if you try separating databases, you just mount different drive to different folder for different database, but what if you want to separate tables into separate drives (each table in different disk)

share|improve this question

migrated from serverfault.com Feb 3 '12 at 23:32

This question came from our site for professional system and network administrators.

    
Have you looked at database sharding? Here is a great webinar vimeo.com/26742356 –  user6527 Feb 8 '12 at 13:50
add comment

3 Answers 3

up vote 3 down vote accepted

In terms of MyISAM, I have seen it work to the advantage of many since there does exists syntax to create a MyISAM table where the .MYD exists on one disk and the .MYI file exists on another. This can reduce disk latency accessing data and index pages for any given MyISAM table. However, you can achieve at least 90% of this effect by just making judicious use of covering indexes.

When it comes do InnoDB, it is a completely different story. Why?

The interaction between the table metadata within ibdata1 and the InnoDB data and index pages is impossible to separate. I pointed this out in an earlier post. In addition, I stated that Percona has recommended against pushing .ibd files into separate disks.

StanleyJohns recommended MySQL Partitioning, which logically makes the most sense for MyISAM. atxdba mentions how to support the use of data and index separation of MyISAM in the OS. Even though InnoDB has the capability for it, please don't overthink partitioning InnoDB. When it comes to performing maintenance, it is more trouble than it is worth.

share|improve this answer
add comment

I think the technique you are looking for is called partitioning. You can read more about MySQL partitioning here.

share|improve this answer
    
+1 for Paritiioning and common sense –  RolandoMySQLDBA Feb 6 '12 at 17:03
add comment

I'm not aware of a specific term for this practice but you can specify different data and/or index dirs using the create table syntax.

This only works for MyISAM tables and your OS must support symlinks.

In my practice though, we generally just segment sets databases into their own LV. These are generally a segment per functional application. Having a single logical volume with all the tables actually in there it's easier to keep track of an manage disk space for each DB.

Those LVs though, are generally in a RAID 10 config to help balance IO.

share|improve this answer
    
+1 for mentioning the positive side of this issue for MyISAM. –  RolandoMySQLDBA Feb 6 '12 at 17:06
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.