MySQL调优
性能监控、数据类型和schema优化、索引实现原理及索引优化、分区设计、服务器参数设置、redolog两阶段提交、读写分离等
寒泉Hq
当你试图解决一个你不理解的问题时,复杂化就产生了
展开
-
MySQL执行计划
mysql执行计划 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。 官网地址: https://dev.mysql.com/doc/refman/5.5/en/explain-output.html1、执行计划中包含的信息ColumnMeaningidThe SELE原创 2020-06-24 00:48:46 · 68342 阅读 · 0 评论 -
MySQL事务及锁机制大揭秘 - 公开课笔记
Spring事务和数据库事务有什么区别?Spring提供了一个类,由这个类以AOP的方式管理,只需要@Transactional即可为什么要有事务?事务的基本概念:要不然全成功,要不然全失败,为了保证一致性。转账的步骤需要3条语句:查询A账户,A账户减去,增加B账户跨行转账:分布式事务一些处理机制:2阶段提交、3阶段提交…ACID原子性 一致性 隔离性 持久性每个特点底层实现的原理是什么?原子性事务中的所有操作作为一个整体,像原子一样不可分割,通过undolog 回滚日志实现un原创 2020-06-22 22:05:13 · 69712 阅读 · 0 评论 -
MySQL调优(八):查缺补漏(mysql的锁机制,读写分离,执行计划详解,主从复制原理)
mysql的锁机制1、MySQL锁的基本介绍 **锁是计算机协调多个进程或线程并发访问某一资源的机制。**在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,My.原创 2020-07-01 09:59:13 · 66346 阅读 · 0 评论 -
MySQL调优(七):滴滴一面二面题,服务器参数设置,redolog两阶段提交
某同学的滴滴一面二面1、自我介绍不要念稿2、对项目描述要准确,不要看起来不懂装懂:态度问题。一些问题没接触过很正常。不要所有问题都抢着说,要展示态度。服务器参数设置thread_cache_size:服务器线程缓存,这个值表示可以重新利用保存再缓存中的线程数量,当断开连接时,那么客户端的线程将被放到缓存中以响应下一个客户而不是销毁,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,这个线程将被重新请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值即可原创 2020-06-30 01:48:24 · 68372 阅读 · 0 评论 -
MySQL调优(六):分区设计,分区优化案例
上节课的一个案例优化 limit 分页在很多应用场景中我们需要将数据进行分页,一般会使用limit加上偏移量的方法实现,同时加上合适的orderby 的子句,如果这种方式有索引的帮助,效率通常不错,否则的化需要进行大量的文件排序操作,还有一种情况,当偏移量非常大的时候,前面的大部分数据都会被抛弃,这样的代价太高。要优化这种查询的话,要么是在页面中限制分页的数量,要么优化大偏移量的性能利用子查询,优化一个 limit 分页例如,原语句:select * from rental limit 100原创 2020-06-29 01:56:23 · 68162 阅读 · 2 评论 -
MySQL调优(五):MySQL查询优化分析
查询慢的原因优化数据访问一个有趣的现象:如果可能的结果非常大的话,有可能就不用索引来排序了。实际处理的时候,可能会有优化器对结果产生一些影响。《高性能MySQL》中说整体数据访问量的阈值是30%,但是实际测试中并没有测出准确值,所以还是要根据实际案例,具体问题具体分析。思考:下面这个limit怎么通过子查询进行优化?避免:1、避免查询不需要的记录我们常常会误以为mysql会只返回需要的数据,实际上mysql却是先返回全部结果再进行计算,在日常的开发习惯中,经常是先用select语句查原创 2020-06-27 01:38:53 · 68872 阅读 · 3 评论 -
MySQL调优(四):MySQL索引优化实现细节
查询优化在编写快速的查询之前,需要清楚一点,真正重要的是响应时间,而且要知道在整个SQL语句的执行过程中每个步骤都花费了多长时间,要知道哪些步骤是拖垮执行效率的关键步骤,想要做到这点,必须要知道查询的生命周期,然后进行优化,不同的应用场景有不同的优化方式,不要一概而论,具体情况具体分析。可以看执行时间(由于数据量比较小,所以差别不是很明显)create table user(id int,name varchar(10),phone varchar(11));alter table user a原创 2020-06-26 01:27:24 · 66435 阅读 · 0 评论 -
MySQL调优(三):索引基本实现原理及索引优化,哈希索引 / 组合索引 / 簇族索引等
索引基本知识索引匹配方式哈希索引当需要存储大量的URL,并且根据URL进行搜索查找,如果使用B+树,存储的内容就会很大select id from url where url=""也可以利用将url使用CRC32做哈希,可以使用以下查询方式:select id fom url where url="" and url_crc=CRC32("")此查询性能较高原因是使用体积很小的索引来完成查找组合索引当包含多个列作为索引,需要注意的是正确的顺序依赖于该索引的查询,同时需要考虑如何更好的原创 2020-06-25 00:38:14 · 68681 阅读 · 5 评论 -
MySQL调优(二):数据类型和schema优化,MySQL8.0取消查询缓存的原因
数据类型和schema优化数据类型的优化合理使用范式和反范式三大范式:1、表不可分2、不能存在传递依赖3、表里其他列的值必须唯一依赖于主键约定大于规范,没有必要严格遵守范式,以业务为准,需要取舍。有时候空间换时间,没有明确的标准。如果排序操作命中了索引,就不需要加载进内存中排序了,效率更高主键的选择自然主键充当主键的字段本身具有一定的含义,是构成记录的组成部分,比如学生的学号,除了充当主键之外,同时也是学生记录的重要组成部分。代理主键(推荐使用)就是充当主键的字段本身不具有原创 2020-06-24 09:00:11 · 68232 阅读 · 0 评论 -
MySQL调优(一):使用profiles、performance_schema性能监控
MySQL 服务器逻辑架构图RBO:基于规则的优化CBO:介于成本的优化没有必要去看优化的一些源码,面试也不会问。查看sql语句实际执行的时间使用SHOW PROFILE命令分析性能的用法注意:未来版本可能会被Performance Schema替换(5.7默认是开启Performance Schema的)如果想要关闭Performance Schema,需要去配置文件中修改。information_schema.tables 中的内容存储在内存中,是不会持久化的Performan原创 2020-06-23 01:43:33 · 66540 阅读 · 0 评论