您的位置:首页 > 数据库 > MySQL

查看mysql数据库的默认引擎及 修改默认引擎

2013-01-16 16:07 501 查看
原文来自:http://blog.csdn.net/jscpb/article/details/7199319

在修改默认引擎之前,最好了解mysql读取配置文件my.cnf的顺序,以及mysql的目录结构 --默认basedir=/usr ,datadir=/var/lib/mysql,/etc/my.cnf

配置文件读取顺序详见另一篇帖子。

1.查看mysql的存储引擎信息

mysql> show engines;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine | Support | Comment

| Transactions | XA | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |

| MRG_MYISAM | YES

| Collection of identical MyISAM tables

| NO | NO | NO |

| MyISAM | YES | MyISAM storage engine | NO | NO | NO |

| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |

| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |

| CSV | YES | CSV storage engine | NO | NO | NO |

| ARCHIVE | YES | Archive storage engine | NO | NO | NO |

| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |

| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |

+--------------------+---------+----------------------------------------------------------------+--------------+------+--------

MySQL-5.5.19-1.linux2.6.i386的默认引擎为InnoDB。

2.设置mysql的默认存储引擎

编辑my.cnf配置文件,在服务器端配置信息[mysqld]下面添加:

default-storage-engine = MyISAM

即可设置mysql数据库的默认引擎为MyISAM

3.设置当前会话的默认存储引擎

SET storage_engine=InnoDB;

即可以设置当前会话连接的默认存储引擎为InnoDB。

4.指定表的存储引擎

如:

create table t_innodb( id int(3) )

engine = innodb;

然后使用

mysql> show table status like 't_i%'\G;

查看表的详细信息。

5.修改表的存储引擎

ALTER TABLE t_name ENGINE = innodb;

修改表的存储引擎时,会重建表,结构文件、数据文件、索引文件等文件。

如果转化为myisam存储引擎,mysql会在datadir/db_name/目录下,生成临时表结构文件(.frm),临时数据文件(.MYD),临时索引文件(.MYI)。此处需要注意的是,myisam类型转换时,生成的.MYI索引文件比数据文件要大很多(这与mysql数据库索引的结构有关,B-Tree结构)(如果捕捉不到临时文件,请让表的数据量达到6位数)在数据文件目录下的表所在的库目录下运行:

while [ 1 ] ; do ls -l | grep -i '\#sql'; done)

如果转化为innodb存储引擎,因为innodb引擎默认使用共享表空间,数据文件、索引文件存储在ibdata1文件里面。

只有和innodb引擎有关的转化时,mysql数据库才会对ibdata1里面的data dictionary进行更新操作,删除旧的表信息,添加新的表信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: