热门标签 | 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

使用场景

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



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
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社区 版权所有