MySQL 储存引擎 MyISAM 和 InnoDB 配置
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,MySQL 存储引擎 MyISAM 和 InnoDB 配置MyISAM 和 InnoDB 最大特点:MyISAM :① 不支持事务 。② 表级锁定形式 ,数据在更新时锁定整个表 。③ 不支持外键约束
千家信息网最后更新 2025年11月08日MySQL 储存引擎 MyISAM 和 InnoDB 配置
MySQL 存储引擎 MyISAM 和 InnoDB 配置
MyISAM 和 InnoDB 最大特点:
MyISAM :
① 不支持事务 。
② 表级锁定形式 ,数据在更新时锁定整个表 。
③ 不支持外键约束 ,只支持全文索引 。
④ 数据库在读取过程中相互阻塞 。
⑤ 数据单独写入或读取 , 速度较快且占用资源相对要少 。
InnoDB:
① 支持事务 。
② 行级锁定 ,但是全表扫描仍然会是表级锁定 。
③ 支持分区、表空间 ,类似Oracle 数据库 。
④ 读写阻塞与事务隔离级别相关 。
⑤ 表与主键以簇的方式储存 。
⑥ 具有非常高效的缓存特性 ,能缓存引索 ,也能缓存数据 。
如何查看存储引擎:
查看 MySQL 默认存储引擎 :
mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES 查看 MySQL 支持的引擎以及默认存储引擎 。
查看表正在使用的存储引擎 :
方法一:
show table status from 库名 where name='表名';mysql> show table status from jdy where name='test';+------+--------+---------+------------+------+| Name | Engine | Version | Row_format | Rows |+------+-------------+-----------------+--------------+| test | InnoDB | 10 | Dynamic | 0 | # 表的存储引擎 InnoDB方法二:
show create table 表名;mysql> use jdy; # 进入查看表的数据库Database changedmysql> show create table test;+-------+---------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+---------------------------------------------------------------------------------------------------------------------------+| test | CREATE TABLE "test" ( "name" varchar(10) DEFAULT NULL, "id" int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | # 表的存储引擎 InnoDB如何修改存储引擎:
方法一 :
mysql> use jdy; # 进入查看表的数据库Database changedmysql> show create table test;+-------+---------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+---------------------------------------------------------------------------------------------------------------------------+| test | CREATE TABLE "test" ( "name" varchar(10) DEFAULT NULL, "id" int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | # 表的存储引擎 InnoDB#命令: alter table 表名 engine=引擎; mysql> alter table test engine=MyISAM; #修改表的存储引擎为 MyISAMQuery OK, 0 rows affected (0.39 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> show create table test;+-------+---------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+---------------------------------------------------------------------------------------------------------------------------+| test | CREATE TABLE "test" ( "name" varchar(10) DEFAULT NULL, "id" int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 | #修改成功方法二 :
修改 MySQL 的配置文件 my.cnf ,指定默认存储引擎
vim /etc/my.cnf[mysqld]default-storage-engine=MyISAM #添加指定默认存储引擎mysql> create table test01 (id int ); #创建表Query OK, 0 rows affected (0.00 sec)mysql> show create table test01;+--------+------------------------------------------------------------------------------------------+| Table | Create Table |+--------+------------------------------------------------------------------------------------------+| test01 | CREATE TABLE "test01" ( "id" int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 | #创建的新表默认 MyISAM设置默认存储引擎 ,创建的新表将使用 MyISAM 存储引擎 。
方法三 :
创建表的时候指定存储引擎
mysql> create table test02 (id int ) engine=InnoDB;Query OK, 0 rows affected (0.35 sec)mysql> show create table test02;+--------+------------------------------------------------------------------------------------------+| Table | Create Table |+--------+------------------------------------------------------------------------------------------+| test02 | CREATE TABLE "test02" ( "id" int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | #新表存储引擎是 InnoDB方法四:
使用mysql_convert_table_format 命令批量转换
[root@localhost ~]#mysql_convert_table_format --host=localhost --user=root --password=abc123 --socket=/tmp/mysql.scok --engine=InnoDB jdy test01 test02执行会报错 ,需要安装操作模块
yum install perl perl-DBD-MySQL -y无法转换InnoDB引擎 ,mysql_convert_table_forma命令bug,需要修改命令脚本。
vim /usr/local/mysql/bin/mysql_convert_table_format #修改命令脚本$opt_help=$opt_version=$opt_verbose=$opt_force=0;$opt_user=$opt_database=$opt_password=undef;$opt_host="localhost";$opt_socket="";$opt_engine="MYISAM";$opt_port=0;$exit_status=0;GetOptions("e|engine|type=s" => \$opt_type, #把type修改成engine"f|force" => \$opt_force,"help|?" => \$opt_help,"h|host=s" => \$opt_host,"p|password=s" => \$opt_password,"u|user=s" => \$opt_user,"v|verbose" => \$opt_verbose,"V|version" => \$opt_version,"S|socket=s" => \$opt_socket, "P|port=i" => \$opt_port) || usage(0);ps: 第四种方法只适合MySQL 5.5版本 。MySQL 5.5 默认存储引擎MyISAM 5.7 默认存储引擎 InnoDB。
引擎
存储
数据
方法
支持
命令
数据库
事务
缓存
配置
脚本
阻塞
最大
成功
全文
形式
文件
方式
时候
模块
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
代理服务器 vpn 区别
软件开发是在建工程吗
数据库中如何创表
网络安全审查查什么
财富宝贝软件开发
数据库只存日期的年
互联网服务器网络出现问题
垦利区软件开发培训
我的世界网上版永生服务器编号
怎么在vac安全服务器
网络安全什么梗
西昌学院数据库原理及应用期末
kms模拟服务器
服务器下载东西失败
生电服务器
秒速网络安全
网络安全分几大类
explain数据库
微信小程序数据库开发
人人商城v2 数据库
服务器与云服务器联接
云邮箱服务器
天津好押互联网科技有限公司
陕西客菲南斯互联网科技
如何把网络安全产品推销出去
有了云服务器怎么上传源码
sql2000删除数据库
网络安全与信息专业就业前景
网络安全德国
数据库的日志数据在哪里