Mysql 修改实例数据库下的所有表引擎
1. 修改单个表
mysql> ALTER TABLE TABLENAME ENGINE=InnoDB
2. 修改多表
mysql>select CONCAT('alter table ',table_name,' engine=InnoDB;') FROM information_schema.tables WHERE table_schema="DBNAME" AND ENGINE="MyISAM"
or
mysql>SELECT CONCAT( 'ALTER TABLE ',TABLE_NAME,'ENGINE=InnoDB;') FROM information_schema.tables WHERE table_schema = 'DBNAME' LIMIT 0 , 10000
语句说明:
1. 将以上SQL语句中的 TABLENAME替换成相应表名称,DBNAME 替换成需要修改的数据库名称。
2. 执行多表修改SQL语句时,这个时候还没有修改,只是给了一个查询结果。需将查询结果复制,去掉前后的引号,然后执行。
3.本例是修改为InnoDB,引擎支持版本使用show engines查询.
扩展阅读
mysql的存储引擎包括:MyISAM、InnoDB、BDB、Heap(Memory)、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
最常使用的2种存储引擎:
㈠.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
㈡.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
1.如何查看MySQL的当前存储引擎?
一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:
2.看你的mysql现在支持和能使用什么存储引擎,显示引擎支持状态,字段 Support为:Default表示默认存储引擎 :
mysql> show engines
3.看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%'
4.如何查看Mysql服务器上的版本
mysql> select version()
5.修改mysql的默认存储引擎为InnoDB
在配置文件my.cnf中的 [mysqld] 下面没有加入或有就修改
default-storage-engine=INNODB 一句
6.查看那个表使用的存储引擎
两种方法:
a、mysql> show table status from db_name where name='table_name';
b、mysql> show create table table_name;
如果显示的格式不好看,可以用\g代替行尾分号
在显示结果里参数engine后面的就表示该表当前用的存储引擎
有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后默认用MyISAM引擎,导致Innodb表数据无法被正确读取。
7.修改表引擎方法
mysql> alter table table_name engine=innodb;
8.修改Innodb引擎为其他的方法
找到mysql安装目录下的my.ini文件:
找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM
找到#skip-innodb 改为skip-innodb
9.重启mysql服务器(具体系统重启命令有所差异):
mysqladmin -u root -p shutdown
或者service mysqld restart 登录mysql数据库