mysql存储引擎 innodb myisam

这一篇博客主要用来记录mysql数据库的存储引擎的基本属性与相关参数


1. 部分命令

使用show engines;显示安装以后可用的存储引擎和默认引擎。   以下为博主自己的mysql服务器的村粗引擎状态

其中InnoDB为默认引擎支持事务  博主mysql版本为5.7    5.5(包括5.5)以上InnoDB则为默认的存储引擎

列Support值为No时表示没有安装对应引擎 

也可以使用 show variables like 'storage_engine'  查询当前默认的存储引擎

 

如何安装? 只需要三部则可以完成

1. 找到mysql服务器安装目录  若不知道 可以执行 show VARIABLES LIKE 'datadir' 该命令是查询启动参数datadir的值是多少

2. 进入目录找到my.ini 查看是否有对应存储引擎名称大小写不敏感 若没有则添加 如 federated=1   1为开启 0为关闭

3. 重启mysql服务即可

 

现在开始讲解不同存储引擎的特性

 

1. innoDB 

首先创建一个使用innoDB作为存储引擎的表

create table my_innodb(
    id int(8) not null,
    primary key(id)
)engine innodb   设置存储引擎为innodb

特性:

            a.  innoDB是一种事务性存储引擎

            b. 完全支持事务的ACID特性

            c. 锁的级别为行级锁 所以对高并发的写操作拥有较好的支持

存储文件:

              在这里统一讲解一下存储文件,mysql在系统中扮演着持久层的一个角色,所以其数据最终是落地在硬盘上的 根据不同                的存储引擎有着不同的存储方式 如何找到每个表对应的文件呢  还记得 show variables like 'datadir'命令吗? 使用该                  命令进入数据目录后 找到对应的数据库目录则会有对应表名的文件

 

              现在我们看看刚才创建表的存储文件

               

              其中.frm后缀的文件是所有存储引擎都有的 保存的是表的结构如属性等  .ibd后缀的则为数据与索引的存储文件

              另外innoDB存储文件的方式有两种  1系统表空间 2独立表空间 默认为独立表空间

              现在我们就来试试设置为系统表空间后的存储文件

              使用show variables like 'innodb_file_per_table' 查看当前innodb的表空间类型 值为on则表示独立表空间 off为系统                       表空间 使用 set global innodb_file_per_table=off 将独立表空间设置为系统表空间

              在创建一个新表  在这里我们使用 create table my_innodb_1 as select * from my_innodb where id = -1进行创建一               个新表 my_innodb_1  再使用同样的方式创建my_innodb_2 创建完毕后我们去查看一下存储文件发现 没有了ibd文件这                 个时候咱们不要着急返回到上一层data目录

          看这里是不是多出来新创建的ibd文件呢   注意重点来了我们创建了两个使用系统表空间的表 为什么               ibd文件只有一个呢 这就是系统表空间的核心所在了  所有的表都只使用一个数据文件

          

 比较系统表空间与独立表空间
 独立表空间系统表空间
IO可以同时向多个文件刷新数据由于多个表是使用同一个数据文件所以会产生IO瓶颈
收缩文件大小可以通过optimize table重新调整数据文件大小 再删除较大数据后使用无法调整

 

2.  MyISAM 

先创建一个mySAM存储引擎的表

create table my_myisam(
id int(4),
nam VARCHAR(32) DEFAULT 'wugui',
PRIMARY KEY (id)
)engine myISAM

特性:

            支持高并发的读取操作

            支持全文检索

            支持数据压缩

   如何进行数据压缩呢?       这个需要再数据库服务器去操作对应的myisampack.exe程序 该程序再安装路径下/bin中  若不清楚安装路径可以使用命令 show variables like "character_sets_dir";  进行对应的查看 

进入bin目录下执行  myisampack -b -f "....../my_myisam.MYI"   双引号中为数据文件的绝对路径 这样便压缩了数据文件再一个数据较大并很少更新的表可以使用压缩

 

innodb与myisam的比较
 innodbmyisam
主外键支持不支持
事务支持不支持
缓存缓存索引与真实数据 对内存要救较高只缓存索引
表空间大(索引与数据都是一个文件)小(索引与数据分开)
关注点事务 只读性能
是否默认安装
行级锁表级锁

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值