innodb数据库批量转换表引擎为MyISAM

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?php

//连接数据库

$host=‘localhost‘;

$user=‘mysql_username‘;   //管理账户

$passwd=‘mysql_password‘; //密码

$db=‘wordpressdb‘;  //数据库名称

$link= mysql_connect($host,$user,$passwd);

if (!$link) {

die(‘Could not connect: ‘.mysql_error() );

}

mysql_select_db( $db,$link ) or die (‘can\‘t use‘. $db . mysql_error());

$result=mysql_query("show tables ") or die( mysql_error());

while($row=mysql_fetch_row($result)){

#echo $row[0];

#var_dump($row);

echo "$row[0] \n";

mysql_query("alter table  $row[0] type=‘MYISAM‘") or die (mysql_error());

}

#var_dump($result);

mysql_close($link);

?>

MySQL 从 5.5 之后默认引擎是 InnoDB,InnoDB 比 MyISAM 要好不少,但是毕竟庞大臃肿,所以以前都是默认 MyISAM,软硬件资源日渐丰富之后,InnoDB 就被重视了。

如果是老的数据库,用的是 MyISAM 引擎,可以用顺利转换到 InnoDB 引擎。MySQL 提供了一个转换脚本(其实默认是用来给你往回转的 InnoDB –> MyISAM),可以在两种引擎中互换,用法很简单,具体可以自己看 help,这里举例一个刚刚转换过来的表:

1

2

3

4

mysql_convert_table_format yourdb --user=root --password=‘youpw‘ -f --socket= ‘/var/run/mysqld/mysqld.sock‘

yourdb 是要转换的数据库名

yourpw 是 root 密码

socket 可以在 my.cnf 文件中找到。

注意事项:

1、MySQl 5.5 以后,mysql_convert_table_format 默认是将 InnoDB 转换成 MyISAM,如果要反过来转,用 –engine= INNODB 是不行的(莫名其妙就是不行),要直接修改 /usr/bin/mysql_convert_table_format 脚本,将里头 $opt_engine=”MYISAM”; 改成 $opt_engine=”INNODB”;  然后运行就可以了。

2、不要随便转换 MySQL 自己的数据库(mysql),这个数据库必须是 MyISAM 引擎的。

时间: 2024-08-10 19:18:06

innodb数据库批量转换表引擎为MyISAM的相关文章

Mysql MyISAM数据库批量转换表引擎为Innodb

Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可.如果想把Innodb改为MyISAM修改里面的  engine='InnoDB'  部分代码. <?php /** * User: Yt * Date: 2016/2/25 0025 */ //连接数据库 $host='localhost'; $user='root'; //数据库用户名 $pas

MySQL存储引擎之MyIsam和Innodb总结性梳理

区别  MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 展名为.MYD (MYData).索引文件的扩 展名是.MYI (MYIndex). 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB 事务处理上方面: MyISAM类型的表强调的是性能,其执行数 度比InnoDB类型更快,但是不提供事务支

(转) mysql数据库引擎:MyISAM和InnoDB(性能优化)

转自 http://yuwensan126.iteye.com/blog/1138022 Mysql 数据库中,最常用的两种引擎是innordb和myisam.Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多,如果你的网站只是做简单的查询,更新,删除,那么用myiasm是最好的选择. 所有的性能测试在:Micrisoft window xp sp2 , Intel(R) Pentinum(R) M processor 1.6oGHz 1G 内存的电脑上

mysql批量修改数据库表引擎

数据库表之前的引擎是MyISAM,影响事务操作,要改成Innodb引擎 查询表引擎 SELECT CONCAT(table_name,' ', engine) FROM information_schema.tables WHERE table_schema="表名" AND ENGINE="MyISAM"; 生成修改sql select CONCAT('alter table ',table_name,' engine=InnoDB;') FROM informa

[转帖]一文看懂mysql数据库本质及存储引擎innodb+myisam

一文看懂mysql数据库本质及存储引擎innodb+myisam https://www.toutiao.com/i6740201316745740807/ 原创 波波说运维 2019-09-29 00:01:00 概述 今天主要讲下mysql数据库引擎的一些概念和mysql数据库本质,一句话总结: 文件夹-文件:一个数据库其实就是一个的文件夹,数据库里面的表就是文件夹里的一个或者多个文件(根据数据库引擎不同而不同,MyISAM是3个,InnoDB是2.5个) mysql的数据库其实就是存放在M

ThinkPHP5查询当前表引擎,以及InnoDB表引擎下count(*)查询效率低的问题

今天新开发的功能上线之后出现了查询效率极其低下的问题,查询日志后发现问题出在代码内的大量的count()查询上,最严重时一条简单的count()查询执行时间长达120多秒! 针对这个问题请教前辈后被告知原因:InnoDB引擎下的count()语句会在实时查询表中的所有数据后返回总数所以效率较低,而MyISAM引擎则是直接返回表内存储的行记录信息所以效率较高.因为我本地的数据库引擎为MyISAM而线上的阿里云数据库服务器引擎为InnoDB所以出现了这种本地环境与线上环境查询效率差距极大的问题. 并

Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果).**那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请

mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)

问题: 这里假设我需要在IP1上的database1上访问IP2的database数据库内的table2表 方法: 这里database作为本地数据库需要开启federated引擎才可以访问远程的database内的表,具体开启方法如下: 本地IP1数据库DATABASE1开启FEDERATED引擎 http://blog.csdn.net/bravezhe/article/details/8269648 MYSQL命令行,查看FEDERATED引擎是否开启,默认是不开启 >show engin

MySql性能调优(六)InnoDB引擎和Myisam引擎的性能对比

对于这两种存储引擎的选择,要根据项目的应用特点来权衡,而对于复杂的应用系统,也可以根据实际情况来选择多种存储引擎的组合.不过这种方法不建议采取. MyISAM支持全文索引,这是一种基于分词创建的索引,支持一些比较复杂的查询,但不是事务安全的,而且不支持外键.每张MyISAM表存放在3个文件中:frm文件存放表格定义:数据文件是MYD:索引文件是MYI:对于MyISAM表,可以手工或者自动执行检查或修复操作. InnoDB是事务型引擎,支持回滚,具有崩溃恢复能力,多版本并发控制,支持ACID事务.