MySQL体系结构
插件式存储引擎:可以使用户根据需求选择不同的查询、存储方式。
MySQL常用存储引擎值MyISAM
MySQL5.5之前的默认存储引擎
临时表:在排序、分组等操作中,当数据超过一定的大小之后,由查询优化器建立的临时表。
特性:
MyISAM使用的是表级锁而不是行级锁
MyISAM的表损坏修复:check table tablename、repair table tablename
数据操作(.frm文件是记录表结构的):
MyISAM表支持数据压缩
命令行:myisampack
对于已经压缩过的表只能进行读操作不能进行其他操作
在MySQL5.0时默认支持的单表存储内存为256TB
使用场景:
非事务型应用(事务型:账单表等)
只读类应用(因为它有压缩数据表的功能)
空间类应用(如存储GPS数据,利用空间函数对锁进行运算基本上就只能使用它)
MySQL常用存储引擎之Innodb
MySQL5.5及之后版本默认存储引擎
Innodb:使用表空间进行数据存储
数据库操作:
关闭独立表空间
系统表空间和独立表空间要如何选择:
比较:
系统表空间无法简单的收缩文件大小
独立表空间可以通过optimize table 命令收缩系统文件
系统表空间会产生IO瓶颈
独立表空间可以同时向多个文件刷新数据
建议:使用独立表空间
Innodb支持行级锁
行级锁可以最大程度的支持并发
行级锁是由存储引擎层实现的
锁的类型:
共享锁(也称读锁)
独占锁(也称写锁)
Innodb状态检查:
show engine innodb status
适用场景:
Innodb适合于大多数OLTP应用(支持全文索引,空间函数)
MySQL常用存储引擎值CSV
前面两种都是以二进制的方式存储的,而CSV则是采用文本方式存储在文件中
.CSV文件存储表内容
.CSM文件存储表的元数据如表状态和数据量
.frm文件存储表结构信息
特点:
以CSV格式进行数据存储
所有列必须都是不能为null的
不支持索引
数据库操作:
查看表内容
直接对表信息进行文本方式修改:
刷新表
使用场景:
适合做为数据交换的中间表(如excel表)
MySQL常用存储引擎之Archive
文件系统存储特点:
以zlib对表数据进行压缩,磁盘I/O更少
以zlib对表数据进行压缩,磁盘I/O更少
数据内容存储在ARZ为后缀的文件中
只支持insert和select操作
只允许在自增ID列上加索引
数据库操作:
不支持删除和更新操作
适用场景:
日志和数据采集类应用
MySQL常用存储引擎之Memory
文件系统存储特点:
也称为HEAP存储引擎,所以数据保存在内存中(也就是说,一但数据库重启数据就会全部消失)
功能特点:
支持hash索引(等值查询)和BTree索引(范围查询)
不支持BLOG和TEXT等大字段
memory存储引擎使用表级锁
数据库操作:
使用场景:
用于查找或者是映射表,例如邮编和地区的对应表
用于保存数据分析中产生的中间表
用于缓存周期性聚合数据的结构表
MySQL常用存储引擎之Federated
特点:
提供了访问远程MySQL服务器上表的方法
本地不存储数据,数据全部放在远程服务器上
数据库操作:
结果显示不支持Federated:
修改配置文件:
重启服务器,查看Federated
分别创建本地和 远程数据库
注意:远程数据库使用的存储引擎使用的是innodb
设置远程连接相关属性:
转换到本地数据库:
创建表,设置存储引擎为Federated,设置远程连接地址及密码
重命名:
直接查询:(该数据是从远程数据库表获取到的,还可以进行其他所有操作)
查看本地数据库是否存在数据,可以看到它只有一个.frm文件,说明没有存储数据
使用场景:
偶尔的统计分析及手工查询