007 mysql 存储引擎

1、存储引擎的分类

      InnoDB:

      MyISAM:

      MEMORY:

      BACKHOLE:

      MERGE:

      ARCHIVE:

      ToKUBE:

       XtraDB:

2、存储引擎功能了解

数据读写

数据安全和一致性

提高性能

自动故障恢复

高可用方面支持

MyISAM: 拥有较高的插入,查询速度,但不支持事务。

InnoDB: 支持事务、行级锁、故障自动恢复、MVCC、热备份、支持外键,GTID

Memory: 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。

Merge:将一定数量的myisam 表联合成一个整体,在超大规模数据存储时很有用

Archive:非常适合存储大量的独立,作为历史记录的数据。对查询支持较差

Federated:讲不同mysql服务器联合起来,逻辑上组成一个完整数据库,适用于分布式。

TokuDB

RocksDB

MyROCKS

以上三种存储引擎共同点:压缩比较高,数据插入性能极高 现在很多的New SQL 使用比较多的功能特性。

ZABBIX: 扩展

TokuDB的INSERT 数据比INNODB 快的多,数据压缩比要nnodb高。

简历案例(存储引擎替换)

环境:zabbix 3.2  maridb 5.6 centos7.3

现象: zabbix卡的要死,每隔3-4个月,都要重新搭建一遍zabbix

问题:

1、zabbix

2、数据库版本

3、zabbix 数据库500G存在一个文件里

优化建议:

1、版本升级到5.7

2、存储引擎改为TOKUDB

3、监控数据按月份进行切割(需要二次开发zabbix)

4、关闭binlog

5、参数调整(关闭binlog 和双一)

    

优化结构:

监控状态良好

为什么?

1、原生态支持tokuDB,另外经测试环境5.7 要比5.5 版本性能高2-3倍

2、Tokudb insert 数据比innodb快的多,数据压缩比innodb高

3、

总结:

TokuDB优点

   1,online ddl 非常给力,特别是对字段的修改非常快

   2,压缩比非常高通常都能达到7,8倍的压缩比

   3,完全支持ACID事物的四大特性

 TokuDB缺点

   1,响应时间相对较长

   2,online ddl 对text,blob等类型的字段不适用

   3,没有合适的备份工具,只能通过mysqldump进行逻辑备份

建议适用场景:

    1,访问频率不高的数据或历史数据归档

    2,表非常大并且时不时还需要进行ddl操作
 

项目经验分享:

Innodb 替换Myisam 存储引擎的替换

环境:centos 5.8 Mysql 版本:5.0 版本 MyIsam 存储引擎,网站业务(LNMP)

现象问题: 业务压力大的时候,非常卡,宕机时会有部分数据丢失。

问题分析:

1、业务压力大时,非常卡。可能是因为表锁引起的,会有很高的表锁等待;

2、数据库部分数据丢失,myisam引擎不支持事务。可能会有内存数据丢失

职责:

1、监控锁的情况,确实有很多的表锁等待

2、存储引擎默认是Myisam

解决方案:

1、升级版本到mysql5.5

2、更该myisam 到innodb

3、开启双1 安全参数

注意:现在生产环境还有这样的环境。

修改一个表的存储引擎:

alter table t1 engine innodb;

如何批量修改存储引擎:

select concat('alter table zabbix',  table_name, "engine tokudb;") from

information_schema.tables where table_schema='zabbix' into outfile  ‘/tmp/tokudb.sql';

平常处理过的MySQL问题-----碎片整理

环境: centos7.4 mysql 5.7.20  Innodb 存储引擎

业务特点: 数据量较大,经常需要按月删除历史数据

问题: 磁盘空间占用很大、不释放

处理方法:

以前:将数据逻辑导出,手工drop 表,然后导入进去

现在:

对表进行按月进行分表(partition,中间件)

业务替换为truncate方式

InnoDB存储引擎物理存储结构

ibdata1: 系统数据字典信息(统计信息)、undo 表空间 (初始12 并以64M大小自动增长)

ib_logfile0 ~ ib_logfile1 : redo 日志文件,事务日志文件

ibtmp1: 临时表空间磁盘位置,存储临时表

frm: 存储表的列信息

idb: 表的数据和索引

mysql5.5 版本出现的管理模式,也是默认的管理模式

mysql5.6 共享表空间保留,只用来存储统计信息、undo表空间。出现了单独的表空间。

mysql5.7 临时表空间被独立出来

mysql8.0: undo 表空间也被独立出来

Redo Log: ib_logfile0 ib_logfile1

Undo log: ibdata1 ibdate2

临时表: ibtmp1 在做join union 操作产生临时数据,用完就自动删除

猜你喜欢

转载自blog.csdn.net/pang_2899/article/details/92795518