共计 3450 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章主要介绍了 MySQL 的常见存储引擎有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
MySQL 常用存储引擎之 MyISAM
特性:
1、并发性与锁级别
2、表损坏修复
check table tablename
repair table tablename
3、MyISAM 表支持的索引类型
①、全文索引
②、前缀索引
4、MyISAM 表支持数据压缩
myisampack
限制:
版本 MySQL5.0 时默认表大小为 4G
如存储达标则要修改 MAX_Rows 和 AVG_ROW_LENGTH
版本 MySQL5.0 时默认支持为 256TB
适用场景:
1、非事务形应用
2、只读类应用
3、空间类应用
MySQL 常用存储引擎之 Innodb
Innodb 存储引擎的特征
1、Innodb 是一种事务性存储引擎
2、完全支持事务的 ACID 特性
3、Redo Log 和 Undo Log
4、Innodb 支持行级锁
Innodb 使用表空间进行 数据存储
为每个表独立创建一个表空间存储
innodb_file_per_table
ON: 独立表空间:tablename.ibd
OFF: 系统表空间:ibdataX(X 是个数字,从 1 开始的数字)
系统表空间和独立表空间要如何选择
比较:
系统表空间无法捡的收缩文件大小
独立表空格键可以通过 optimize table 命令收缩系统文件
系统表空间会产生 IO 瓶颈
独立表空间可以同时向多个文件刷新数据
表转移的步骤
步骤:
1、使用 mysqldump 到处所有数据库表数据
2、停止 MySQL 服务,修改参数,并删除 Innodb 相关文件
3、重启 MySQL 服务,重建 Innodb 系统表空间
4、重新导入数据
MySQL 常见的存储引擎之 CSV
文件系统存储特点
1、数据以文本方式存储在文本中
2、.csv 文件存储表内容
3、.csm 文件存储表的元数据如表状态和数据量
4、.frm 文件存储表结构信息
5、以 csv 格式进行存储
6、所有列必须都是不能为 Null 的
7、不支持索引
适用场景:
适用作为数据交换的中间表(电子表格 - csv 文件 - MySQL 数据库目录)
MySQL 常用存储引擎之 Archive
文件系统存储特点
1、以 zlib 对表数据进行压缩, 磁盘 I / O 更少
2、数据存储在 ARZ 为后缀的文件中
Archive 存储引擎的特点
1、只支持 insert 和 select 操作
2、只允许在自增的 ID 列上加索引
适用场景:
日志和数据采集类应用
MySQL 常用存储引擎之 Memory
文件系统存储特点
1、也成 HEAP 存储引擎,所以数据保存在内存中
功能特点:
1、支持 HASH 索引和 Btree 索引
2、所有字段都有固定长度 varchar(10)=char(10)
3、不支持 BLOG 和 TEXT 等大字段
4、Memory 存储引擎使用表级锁
5、最大大小由 max_heap_table_size 参数决定
适用场景:
1、用于查找或者是映射表,例如邮编和地区的对应表
2、用于保存数据分心中产生的中间表
3、用于缓存周期性聚合数据的结果表
MySQL 常用存储引擎之 Federated
特点:
1、提供了访问远程 MySQL 服务器上表的方法
2、本地不存储数据,数据全部放到远程服务器上
3、本地需要保存表结构和远程服务器的连接信息
如何使用
默认静止,启用需要在启动时增加 federated 参数
mysql://user_name[:password]@host_name[:port]/db_name/table_name
适用场景:
偶尔的统计分析及手工查询
如何选择正确的存储引擎
参考条件
1、是否要支持事务
2、定期备份
3、崩溃恢复
4、存储引擎的特有特性
Mysql 的服务器参数介绍
MySQL 获取配置信息路径
1、命令行参数
mysqld_safe –datadir=/data/sql_data
2、配置文件
查看配置文件的命令:
[root@localhost ~]# mysqld –help –verbose | egrep -A 1 Default options
配置文件的有效路径
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
MySQL 配置参数的作用域
1、全局参数
set global 参数名 = 参数值;
set @@global. 参数名:= 参数值;
2、会话参数
set [session] 参数名 = 参数值;
set @@session. 参数名:= 参数值;
内存配置相关参数
1、确定可以使用的内存的上限
2、确定 MySQL 的每个连接使用的内存
sort_buffer_size
join_buffer_size
read_buffer_size
read_rnd_buffer_size
3、确定需要为操作系统保留多少内存
4、如何为缓存池分配内存
Innodb_buffer_pool_size
注:设置缓存池的大小的考量标准为: 总内存 -(每个编程所以需要的内存 * 连接数)- 系统保留内存
key_buffer_size
select sum(index_length) from information_schema.tables where engines= myisam
I/ O 相关配置参数
Innodo I/ O 相关配置
Innodb_log_file_size 单个事务日志的大小
Innodb_log_files_in_group 控制文件日子的个数
事务日志总大小 = Innodb_log_files_in_group * Innodb_log_file_size
Innodb_log_buffer_size = (32M or 128M)
Innodb_flush_log_at_trx_commint
0: 每秒进行一次 log 写入 cache, 并 flush log 到磁盘
1[默认]: 在每次事务提交执行 log 写入 cache,并 flush log 到磁盘
2[建议]: 每次事务提交,执行 log 数据写入到 cache 中,每秒执行一次 flush log 到磁盘
Innodb_flush_method=O_DIRECT
Innodb_file_per_table = 1
Innodb_doublewrite = 1
MyISAM I/ O 相关配置
delay_key_write
OFF: 每次写操作后刷新键缓冲中的脏块到磁盘
ON: 只对在键表时指定了 delay_key_write 选项的表使用延迟刷新
ALL: 对所有的 MyISAM 表都使用延迟建写入
安全相关配置参数
expire_logs_days 指定自动清理 binlog 的天数
max_allowed_packet 控制 MySQL 可以连接的包大小,建议设置为 32M,如果使用了主从复制,参数应该设置成一致的
skip_name_resolve 禁用 DNS 查找
sysdate_is_now 确保 sysdate() 返回确保性日期
read_only 禁止非 super 权限的用户写操作 注:建议在主从复制中的从库开启此功能。以确保不能修改从库中的操作,只能从主库同步过来
skip_slave_start 禁用 Salve 自动恢复(从库中的设置使用)
sql_mode 设置 MySQL 所使用的 SQL 模式(谨慎操作,可能会造成 MySQL 无法执行)
① strict_trans_tables 给定的数据如果不能插入到数据库中,对事务引擎会终端操作,对非事务引擎是没有影响的
② no_engine_subitiution 在 create table 中指定 engines 的时候,如果引擎不可用,不会使用默认引擎建立表
③ no_zero_date 不能再表中插入 0 年 0 月 0 日的日期
④ no_zero_in_date 不接受一部分的为 0 的日期
⑤ noly_full_group_by
其他常用的配置参数
sync_binlog 控制 MySQL 如何向磁盘刷新 binlog
tmp_table_size 和 max_heap_table_size 控制内存临时表大小(不宜设置的太大,以避免内存的溢出)
max_connections 控制允许的最大连接数(默认为 100,有点小,根据自己的业务适当的调整大小)
什么影响了性能
数据库设计对性能的影响
1、过分的反范式化为表建立太多的列
2、过分的范式化造成太多的表关联(关联的表尽可能的控制在 10 个之内)
3、在 OLTP 环境中使用不前挡的分区表
4、使用外键保证数据的完整性
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MySQL 的常见存储引擎有哪些”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!