shell批量修改MySQL存储引擎类型2种方法
MySQL存储引擎类型有哪些
MyISAM管理非事务表。提供高速检索,以及全文搜索能力。
Memory存储引擎提供”内存中”表,MERGE存储引擎允许集合将被树立统一的MyISAM表做为一个单表。非事务表。可把多个myisam表构建为一个虚拟表,使得对这些表的查询仿佛在一个表上进行,提高了查询速度和修复效率,并节省了磁盘空间。
InnoDB,BDB存储引擎提供事务安全表。
EXAMPLE存储引擎是一个”存根”引擎,它不做什么。可以用这个引擎创建表,但没有数据被存储其中或从其中检索,这个引擎的目的是服务。针对开发人员。
NDB Cluster是被Mysql Cluster用来实现分割多台计算机上的表的存储引擎。只被LINUX,SOLARIS,Mac os支持。
ARCHIVE存储引起被用来无索引地,非常小的覆盖存储的大量数据。
CSV存储引擎把数据以逗号的格式存储在文本文件中。
BLACKHOLE存储引擎把数据存在远程数据库中。在5.1中他只和Mysql一起工作,使用Mysql C client API。在未来的分发版中,我们想要让它使用其他驱动器或客户端连接方法里连接到另外的数据源。
MyISAM类型的表在磁盘上存储成三个文件
*.frm文件存储表定义
*.MYD(mydata)文件存储表中数据
*.MYI(myindex)文件存储表上建立的索引。
InnoDB类型的表提供提交,回滚,崩溃恢复能力的存储引擎。行级锁。可以与其他Mysql表混合起来,甚至在同一个查询中也可以混用。
为处理巨大数据量时的最大性能设计。
批量修改MySQL存储引擎类型方法
一、shell脚本实现法
代码如下 | 复制代码 |
#/bin/bash |
喜欢交互式的就把echo 、read那段的注释去掉,可以根据提示进行更改。也可以根据自己的需要把DB、user、password、host等信息修改后直接运行。该方法的原理就是循环调用alter table 表名 engine=NDBcluster的语句。该方法还有一个变种:
首先利用mysql内部的系统表得出要执行的sql语句:
代码如下 | 复制代码 |
SELECT CONCAT('ALTER TABLE ',table_name,' ENGINE=InnoDB;') FROM information_schema.tables WHERE table_schema="db_name" AND ENGINE="myisam"; |
将以上结果输出到文件。然后执行该SQL语句的文件。执行完后,可以通过下面的语句确认下:
SELECT CONCAT(table_name,' ', engine) FROM information_schema.tables WHERE table_schema="db_name";
方法二、利用存储过程批量修改
代码如下 | 复制代码 |
DELIMITER $$ |
调用方法:
代码如下 | 复制代码 |
call sp_alter_db_engine('baigan_cs','innodb'); |
前表一个是库名,后面是要改成的引擎类型。
您可能感兴趣的文章:
修改mysql默认存储引擎的方法
linux下mysql默认字符集、默认数据库引擎的修改方法
mysql innodb数据库引擎解析
MySQL正确的myisam转innodb的方法
mysql innodb数据库批量转换表引擎为MyISAM的方法
教你如何选择合适的MySQL存储引擎
高性能mysql(第二版)学习笔记之架构优化和索引
php高级程序员该学什么
mysql性能优化之缓存参数优化
高性能mysql学习笔记总结