加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

老司机也该把握的MySQL优化指南

发布时间:2018-10-12 21:58:03 所属栏目:编程 来源:DBAplus社群
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 当MySQL单表记录数过大时,增编削查机能城市急剧降落,以是我们本文会提供一些优化参考,各人可以参考以下步调来优化: 一、单表优化 除非单表数据将来会一向不绝上涨,不然不要一开始就思量拆分,拆分会

缓存可以产生在这些条理:

  •  MySQL内部:在体系调优参数先容了相干配置;
  •  数据会见层:好比MyBatis针对SQL语句做缓存,而Hibernate可以准确到单个记录,这里缓存的工具首要是耐久化工具Persistence Object;
  •  应用处事层:可以通过编程本领对缓存做到更精准的节制和更多的实现计策,这里缓存的工具是数据传输工具Data Transfer Object;
  •  Web层:针对web页面做缓存;
  •  赏识器客户端:用户端的缓存。

可以按照现实环境在一个条理或多个条理团结插手缓存。这里重点先容下处事层的缓存实现,今朝首要有两种方法:

  •  直写式(Write Through):在数据写入数据库后,同时更新缓存,维持数据库与缓存的同等性。这也是当前大大都应用缓存框架如Spring Cache的事变方法。这种实现很是简朴,同步好,但服从一样平常。
  •  回写式(Write Back):当稀有据要写入数据库时,只会更新缓存,然后异步批量的将缓存数据同步到数据库上。这种实现较量伟大,必要较多的应用逻辑,同时也许会发生数据库与缓存的差异步,但服从很是高。

四、表分区

MySQL在5.1版引入的分区是一种简朴的程度拆分,用户必要在建表的时辰加上分区参数,对应用是透明的无需修改代码。

对用户来说,分区表是一个独立的逻辑表,可是底层由多个物理子表构成,实现分区的代码现实上是通过对一组底层表的工具封装,但对SQL层来说是一个完全封装底层的黑盒子。MySQL实现分区的方法也意味着索引也是凭证分区的子表界说,没有全局索引。

老司机也该把握的MySQL优化指南

用户的SQL语句是必要针对分区表做优化,SQL前提中要带上分区前提的列,从而使查询定位到少量的分区上,不然就会扫描所有门区,可以通过EXPLAIN PARTITIONS来查察某条SQL语句会落在那些分区上,从而举办SQL优化,如下图5笔记录落在两个分区上:

  1. mysql> explain partitions select count(1) from user_partition where id in (1,2,3,4,5);  
  2. +----+-------------+----------------+------------+-------+---------------+---------+---------+------+------+--------------------------+  
  3. | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | Extra |  
  4. | 1 | SIMPLE | user_partition | p1,p4 | range | PRIMARY | PRIMARY | 8 | | 5 | Using where; Using index |  
  5. 1 row in set (0.00 sec) 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读