热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优化mysql聚合_mysql性能优化总结(三)

mysql体系结构插件式存储引擎,将数据的查询和存储相分离.每一款存储引擎都有各自的优缺点.可以灵活选用架构:客户端-mysql服务层-存储引擎层存储引擎是针对表,不是针对库,

mysql体系结构

插件式存储引擎,将数据的查询和存储相分离.每一款存储引擎都有各自的优缺点.可以灵活选用

架构: 客户端 -> mysql服务层 -> 存储引擎层

存储引擎是针对表,不是针对库,同一库中的不同的表,可以使用不同的存储引擎.(但是不建议这样做),存储引擎的不同会对性能产生直接的影响.

mysql常用的存储引擎之MyISAM

mysql5.5之前版本默认的存储引擎

MYISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成,另外还有一个frm文件,并非myisam特有,是所有存储引擎都有的文件,用于存储表结构

myisam特性

1.并发性与锁级别

使用的是表级锁,读取数据的时候也是对全表加共享锁.读取和写入是互斥的.

读写并发场景性能不佳

2.表损坏恢复

check table tableName;

repair table tableName;

3.myisam支持的索引类型

支持全文索引,并且是在5.7之前唯一支持全文索引的官方存储引擎

支持对text和blob字段简历前500字符的前缀索引

4.myisam支持对只读表的数据压缩,减少磁盘io(测试使用mariadb,发现压缩之后仍然可以插入数据,myisam.OLD还在一直变大)

myisampack -b -f tablename.MYI

myisam限制

不支持事务

5.0之前的版本默认表大小是4G

5.0之后的版本默认表大小是256TB

myisam适用场景

1.非事务型应用

2.只读类应用

3.空间类应用      myisam是5.7之前唯一支持空间函数的存储引擎,例如gps数据

mysql常用的存储引擎之InnoDB

5.5及之后默认的存储引擎

特性:

1.系统表空间和独立表空间两种存储方式

由参数innodb_file_per_table决定,5.6之后默认ON,使用独立表

比较

系统表空间无法简单的收缩文件大小

独立表空间可以通过optimize table指定来收缩系统文件

使用系统表空间会产生io瓶颈,独立表空间可以同时向多个文件刷新数据

2,是一种事务存储引擎,完全支持ACID特性

Redo Log 和 Undo Log实现ACD,锁实现I

3.支持行级锁,最大程度的支持并发,行级锁是在存储引擎层实现的

锁的类型

共享锁(读锁)

独占锁(写锁)

对于用一条记录,读锁和写锁是互斥的,所以按道理来说如果对一条数据加上写锁,应该读取不到才对.但是实际情况是仍然可以读取到,这是为什么呢?因为此时读取的Undo Log 中的老的数据版本 \

锁的粒度

表级锁

行级锁

阻塞和死锁

如何处理死锁?

在多个事务中,按照相同的顺序访问多个资源,或者加上索引

innodb状态检查

show engine innodb status

使用场景  innodb适用于大多数OLTP应用

mysql常用的存储引擎之CSV

存储特点

1.数据以CSV格式进行存储

3b17035ad1cccf1bac5d44194968fa0d.png

2.所有列必须都是非null

3.不支持索引

4.不适合大表,不适合在线处理

5.可以对数据文件直接编辑

使用场景:

适合作为数据交换的中间表

26f65334bd6ddfeed70bff31f3d77aad.png

c59997e534b85105d3d31e371b255241.png

mysql常用的存储引擎之Archive

存储特点

1.以zlib对表数据进行压缩,磁盘I/O更少,一个几T的innodb表,如果里面的数据存储到archive存储引擎中,可能只需要几百M

2.数据存储在以ARZ为后缀的文件中

3.只支持insert和select操作

4.只支持在自增id上建立索引

使用场景

日志和数据采集类应用

mysql常用的存储引擎之memory

也称heap存储引擎,数据保存在内存中

存储特点

1.支持Hash索引和BTree索引,建立索引时默认hash索引(等值查询快,不支持范围查询),BTree所以支持范围查找

2.所有字段都为固定长度  varchar(10)=char(10)

3.不支持BLOB,TEXT等大字段类型

4.使用表级锁

5.最大大小由max_heap_table_size决定

使用场景

1.用于查找或者是映射表(等值查询快),例如邮编和地区的对应关系

2.用于保存数据分析中产生的中间表

3.用户缓存周期性聚合数据的结果表

mysql常用的存储引擎之federated

特性

提供了访问远程mysql服务器上表的方法(结盟表)

本地没有数据,数据全部在远程

本地需要保存表结构和连接信息

默认禁止

7185e018863deda404a7c42b981891b8.png

使用场景

偶尔的统计分析和手工查询



推荐阅读
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
  • 如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ... [详细]
author-avatar
akj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有