2

I have read all of the innodb/myisam threads and they are confusing. Everyone says innodb but I am assuming that they are saying innodb engine with innodb tables.?

The software I am using creates myisam tables so I was wondering if I should switch from the default innodb engine to myisam engine and disable innodb since I do not have a single table that is innodb?

migrated from stackoverflow.com Feb 21 '15 at 0:56

This question came from our site for professional and enthusiast programmers.

3

Software that uses MyISAM tables is often a sign that you are dealing with amateur quality software. There have been very few valid reasons to use MyISAM for several years, now... ACID and intelligent crash recovery and foreign key constraints are just a few things that come to mind that MyISAM will never dream of being able to provide.

Turning off InnoDB because you aren't using it is also an exercise in futility and short-sighted at best. It is essentially just tinkering with your server for no good reason. Leave that setting, and virtually all of the other settings, at their default values unless you have a specific reason to change them. Tweaking parameters requires discipline and deliberate, well-informed action.

Oracle has officially deprecated the ability to do this, anyway. As of now, in 5.6.23, disabling InnoDB still works, but results in a warning that it is a capability that will subsequently be removed... which should tell you something about whether it's a good idea. http://dev.mysql.com/doc/refman/5.6/en/innodb-turning-off.html

0

Your question seems to imply that the innodb engine is reading myisam tables. This is not the case the innodb engine only reads innodb tables. The myisam engine only reads myisam tables.

Which version of mysql determines which engine is used for the mysql schema - the tables holding authentication and schema metadata switched from myisam to innodb around version 5.5. I've never tried to switch the format of this database - its not a task for the faint of heart.

If all your tables use myisam, then by all means disable the engine. And if the mysql metadata database only is using innodb then you may want to reduce the resource assigned to it. But I would not converting it to myisam from innodb unless you have some very specific, unusual and compelling reason to do so.

  • Thanks for the quick response. I forgot to add "disable innodb" to my question. I have edited the question. – Texas Trophy Feb 21 '15 at 0:42
  • 1
    Changing the storage engine of tables in the mysql schema is generally unsupported and should not be attempted. – Michael - sqlbot Feb 21 '15 at 2:33
0

The simple answer is "you don't have to do anything".

The "right" answer is that you should switch all the table to InnoDB and change a couple of my.cnf settings. The other answerers have given you multiple reasons.

If you choose to make the switch, here is a blog that explains what you should take care of during the conversion: http://mysql.rjweb.org/doc.php/myisam2innodb . It also explains many of the technical differences between the two ENGINEs.

-1

"Using innodb engine" means that INNODB would be the default engine for creating tables, i.e. if you CREATE TABLE a ... without specifying an engine for the table, it will be created according to the default engine.

If your tables are already created as MYISAM tables, it's meaningless to "use innodb". You are actually using MYISAM.

In other words - the DB has no engine, only tables have an engine...

See the manual here.

EDIT After question was edited.

YES - you should disable InnoDB. Why? I assume this would save memory (but that's guessing).

From the manual, see the 2nd paragraph:

Turning Off InnoDB

Oracle recommends InnoDB as the preferred storage engine for typical database applications, from single-user wikis and blogs running on a local system, to high-end applications pushing the limits of performance. In MySQL 5.5, InnoDB is the default storage engine for new tables.

If you do not want to use InnoDB tables, start the server with the --innodb=OFF or --skip-innodb option to disable the InnoDB storage engine. In this case, because the default storage engine is InnoDB, the server will not start unless you also use --default-storage-engine to set the default to some other engine.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy