MySQL 储存引擎 MyISAM 和 InnoDB 配置
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,MySQL 存储引擎 MyISAM 和 InnoDB 配置MyISAM 和 InnoDB 最大特点:MyISAM :① 不支持事务 。② 表级锁定形式 ,数据在更新时锁定整个表 。③ 不支持外键约束
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
什么是小学校园网络安全
工业设备网络安全管理制度
mysql 进入数据库
奇瑞软件开发待遇
上海网络安全总队长
面试数据库索引题
为什么不能获取服务器列表
银行软件开发有嵌入式吗
河北麻将软件开发定制企业
辽宁网络视频服务器云主机
杭州英瑞互联网科技有限公司
军事技术排行榜全球数据库
台湾多ip云服务器
拥有t3数据库置疑
网络技术导图
济南维快网络技术有限公司
智慧校园里的网络安全
zblog文章数据库是哪个
香港阿里云服务器价格
小米无法与服务器建立安全连接
企业网络安全学院
dns服务器思维导图
蓝牙软件开发培训
云网络安全性怎么样
大华存储服务器如何关机
方华网络技术服务有限公司
青岛清晨网络技术研发有限公司
学完数据库可用于什么技术
绍兴软件开发驻场公司有哪些
自动化软件开发前景