InnoDB per-table tablespaces – split ibdata1 to smaller chunks 2

Posted by Slobodan Kovačević on July 24, 2008

Today I had to import 3GB of InnoDB tables in MySQL. Unfortunately, while importing the server run out of disk space – which caused whole server to grind to a halt. Naively I tried to delete imported data to free up space… I was in for an unpleasant surprise.

By default when MySQL uses InnoDB engine it stores most of the information in single file called ibdata1. One downside is that once ibdata1 file grows it cannot shrink – even if you delete all InnoDB tables. For some reason MySQL is set to use single file instead of per-table tablespaces similar to MyISAM.

Enabling per-table tablespaces is easy just add innodb_file_per_table to my.cnf file. Problem is that all newly created tables, only new tables, will be in separate files. It seems that there’s no easy way to convert old tables and reclaim the space taken by ibdata1.

There are 3 ways and two are basically export-drop-delete-import type of solutions:

  1. Convert all InnoDB tables to MyISAM
  2. Export only InnoDB tables, drop them, delete ibdata1 and import InnoDB tables.
  3. Export all databases, delete ibdata1 and import everything back.

I choose option 2 because I luckily had only 40 InnoDB tables and much more using MyISAM. For details on how to apply each solution and down/up sides of each read MySQL: Reducing ibdata1.

Share/Save/Bookmark

This should be interesting weekly – week 28

Posted by Slobodan Kovačević on July 13, 2008

[condensed from 'this should be interesting' tumblelog]

Share/Save/Bookmark

Collection partial variable naming – new in edge rails 2

Posted by Slobodan Kovačević on July 07, 2008

One thing that always annoyed me when rendering collection partials is that a local var in partial is named same as a partial template name. So, to go around this I always created another local variable in partial and gave it a more meaningful name.

No longer… As the Ryan says from now on in the Edge Rails you can specify the name of the local variable in which each collection element will be exposed within a partial. You will can do this:

render :partial => 'employees', :collection => @workers, :as => :person

It’s a simple thing, but it’s just one of the things that bugged me. I am glad it’s gone now.

Share/Save/Bookmark

This should be interesting weekly – week 27

Posted by Slobodan Kovačević on July 06, 2008

This is the first weekly condensed edition of my “This should be interesting” tumblelog. Every Sunday I will re-post most interesting posts here on the Icebergist.

Share/Save/Bookmark

Mac OS X problems upgrading from 10.5.3 to 10.5.4

Posted by Slobodan Kovačević on July 04, 2008

Today I tried to upgrade my Mac from 10.5.3 to 10.5.4 using normal Software Update. That didn’t go as planned as installation hanged at “Configuring Installation” and only thing I could do is shutdown the computer.

After some research and few unsuccessful retries I have finally managed to solve the upgrade problem by downloading standalone 10.5.4 update from Apple download section; booting in safe mode (hold shift key when booting) and then installing the update.

Share/Save/Bookmark