![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL实战与优化指南v1.0
文章平均质量分 82
桥路丶
这个作者很懒,什么都没留下…
展开
-
MySQL索引优化方法(1/16)
MySQL中有几种索引:主键索引(Primary Key Index):每个表都有一个主键,主键索引是自动创建的唯一索引。它通常是聚簇索引(在索引树的叶子结点中存储的是需要查找的数据)。二级索引:指除了主键索引以外的所有索引,它们可以是基于单个列(单列索引)或多个列(组合索引)的索引。二级索引在InnoDB存储引擎中被称为非聚簇索引(Non-Clustered Index),二级索引的叶子节点通常包含索引列的值和一个指向数据行的引用(在InnoDB中通常是主键的值)。原创 2024-04-11 09:53:52 · 651 阅读 · 0 评论 -
MySQL选择普通索引还是唯一索引(2/16)
普通索引(Non-Unique Index),也称为非唯一索引,它允许索引中的条目具有重复的键值。普通索引的主要目的是加快查询速度,它并不关心数据的唯一性。可以包含重复的索引键值。适用于快速查找具有相同索引值的多个记录的场景。不保证数据的唯一性。唯一索引(Unique Index)是一种数据库索引,它要求索引中的所有键值都是唯一的。如果尝试插入或更新记录以产生重复的索引键值,数据库将拒绝这种操作。保证索引中的键值是唯一的。适用于确保数据表中某一列或列组合的唯一性,例如身份证号、用户名等。原创 2024-04-11 09:56:33 · 839 阅读 · 0 评论 -
MySQL前缀索引(3/16)
注意:在使用覆盖索引的情况下,正常可以不需要回表,因为覆盖索引中已经包含所需数据,但使用了前缀索引时,如果select中包含前缀索引所选字段的数据(因为数据不完整),例如email,会导致回表降低性能。星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!原创 2024-04-11 09:57:26 · 554 阅读 · 0 评论 -
MySQL自动索引选择机制与优化方法(4/16)
分别在两个字段上建索引,布尔型字段索引会把数据分成两部分,枚举型会把数据分成十份,根据索引查找的时候,布尔型选择了一个排除了一半,枚举型选一个会排除9/10,所以枚举型区分度更好。基数指的是索引值的唯一性的度量,即索引列中不同值的数量。当索引基数比较大的时候,要不要走这个索引,还得看扫描行数,回表,子查询等等,最后优化器根据预估的成本决定是否走这个索引。采样统计的时候,InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。原创 2024-04-11 09:58:21 · 996 阅读 · 0 评论 -
MySQL哪些情况优化器会放弃索引(5/16)
星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!对索引字段进行函数操作、隐式类型转换或字符编码转换都可能导致MySQL优化器放弃使用索引,从而影响查询性能。原创 2024-04-11 10:00:13 · 602 阅读 · 0 评论 -
MySQL一些特殊功能的索引(6/16)
星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!🔗 立即扫描下方二维码,加入知识星球,与行业精英共同成长,开启您的专属学习之旅!原创 2024-04-11 10:00:52 · 508 阅读 · 0 评论 -
MySQL脏页刷写时机(7/16)
InnoDB引擎在处理更新语句时,会先写入redo log(重做日志),然后更新内存,最后将内存中的数据写入磁盘。星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。参数的重要性,建议将其设置为磁盘的IOPS(每秒输入/输出操作次数),以确保InnoDB能够根据实际的磁盘能力来控制刷脏页的速度。🔗 立即扫描下方二维码,加入知识星球,与行业精英共同成长,开启您的专属学习之旅!原创 2024-04-11 10:03:38 · 397 阅读 · 0 评论 -
MySQL表空间管理与优化(8/16)
一个表单独存储为一个文件更容易管理,而且在你不需要这个表的时候,通过 drop table 命令,系统就会直接删除这个文件。而如果是放在共享表空间中,即使表删掉了,空间也是不会回收的。星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。在进行表重建操作时,需要考虑操作对业务的影响。原创 2024-04-11 10:04:44 · 1011 阅读 · 0 评论 -
MySQL排序原理与优化方法(9/16)
*磁盘临时表排序:**如果排序操作需要处理的数据量超过了内存的限制,或者无法在内存中完成排序,MySQL会将数据溢写到磁盘上的临时表中进行排序。这种情况下,MySQL会创建一个磁盘临时表,并可能涉及到磁盘I/O操作,这会增加排序操作的时间。磁盘临时表的排序过程与内存临时表有所不同,可能会采用优先队列排序算法,减少了对临时文件的依赖。**内存临时表排序:**在MySQL中,使用InnoDB引擎执行排序操作时,当处理的数据量较小,可以在内存中完成排序时,MySQL会优先使用内存进行排序操作。原创 2024-04-11 10:07:25 · 860 阅读 · 0 评论 -
MySQL随机读取数据优化(10/16)
随着单词表的增大,随机选择单词的逻辑变得越来越慢,影响了首页的加载速度,可以有以下优化算法。星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!原创 2024-04-11 10:09:37 · 481 阅读 · 0 评论 -
MySQL连接数过多问题(11/16)
星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。状态的线程,如果确定它们没有处于任何事务中,可以优先考虑断开这些连接。长期来看,应该优化应用程序的连接管理策略,比如使用连接池、设置合理的超时时间、确保及时释放不再需要的连接等,以减少这类问题的发生。,可能会回滚事务,导致数据不一致。原创 2024-04-11 10:10:24 · 1031 阅读 · 0 评论 -
Mysql内存表及使用场景(12/16)
星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。Memory引擎的数据和索引分开存储,数据以数组形式存放,主键索引(hash索引)存储数据位置,称为堆组织表(Heap Organized Table)。我们在知识星球等您,一起探索MySQL的深层次世界!关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!原创 2024-04-11 10:11:22 · 611 阅读 · 0 评论 -
MySQL数据导出导出的三种办法(13/16)
使用mysqldump工具优点简单易用,只需一条命令即可完成数据导出。可以导出表结构和数据,方便完整备份。支持过滤条件,可以选择导出部分数据。生成的文件可以用于跨平台、跨版本的数据迁移。缺点导出的数据包含额外的INSERT语句,可能导致导入速度较慢。不能使用复杂的JOIN条件作为过滤条件。推荐场景需要备份和迁移表结构和数据。需要导出部分数据到其他系统或进行数据分析。导出CSV文件优点CSV格式通用,易于在不同应用程序间交换数据。可以利用文本编辑器查看和编辑数据。原创 2024-04-11 10:12:18 · 6229 阅读 · 0 评论 -
MySQL分区表(14/16)
分区表是数据库中一种用于优化大型表数据管理和查询性能的技术。它将一个表的数据根据特定的规则或条件分割成多个部分,每个部分称为一个分区。每个分区可以独立于其他分区进行存储、管理和查询,这样可以提高数据处理的效率,尤其是在处理大量数据时。数据分散存储:分区表将数据分散存储在不同的物理区域,这有助于减少单个数据文件的大小,提高I/O性能。查询优化:通过只查询相关的分区而不是整个表,可以减少数据扫描的范围,从而加快查询速度。分区表对于业务来说是透明的,不需要修改业务代码即可实现数据的分区管理。维护便捷。原创 2024-04-11 10:13:09 · 982 阅读 · 0 评论 -
MySQL高负载排查方法最佳实践(15/16)
top 是一款 Linux 系统下经常被用来做性能分析的工具,它可以实时动态的展示进程,线程的资源使用情况,在 top 工具展示监控指标里,运维人员最关心的是 cpu 和 mem 的使用情况。当服务器有特别多的 CPU 核,有时候看 CPU 汇总信息,发现 CPU 的 idle 很高,但是上面跑的应用程序却很慢,这个时候就需要看看每个核的资源试用情况了。可以很清楚看到是 10850 线程消耗了 CPU 资源,剩下的就根据操作系统的里线程 ID,去 MySQL 数据库里排查,此线程正在执行的操作。原创 2024-04-11 10:14:24 · 1632 阅读 · 0 评论 -
MySQL压力测试最佳实践(16/16)
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。项目地址:http://github.com/akopytov/sysbench。原创 2024-04-11 10:15:37 · 595 阅读 · 0 评论