MySQL
鸢尾_1024
你花八块买个盒饭的时候,觉得很节省,有人在路边买了一块钱的馒头吞咽后步履匆匆;你八点起床看书觉得很勤奋,上微博发现曾经的同学八点就已经在面对繁重的工作;你周六加个班,觉得很累,打个电话才知道许多朋友都连续加班一个月了。技术没有终点,加油加油↖(^ω^)↗。
展开
-
优化特定类型的查询
优化特定类型的查询优化COUNT()查询COUNT(*) 忽略所有列,直接统计所有行数。当没有条件时;可以通过MySQL的存储引擎直接获取对应的值。COUNT一般都需要扫描大量的行,即大量的数据访问。比较难优化,善用补集进行替代,减少扫描数量优化关联查询确保ON或者USING子句中的列上有索引;确保任何的GROUP BY 和ORDER BY中的表达式只涉及到一个表中的列,这样MySQL才有可能使用索引来优化这个过程。升级MySQL时需要注意关联语法的变化。优化子查询尽量使用关联查询代替原创 2020-10-08 19:18:45 · 139 阅读 · 1 评论 -
MySQL查询优化器的局限性
MySQL查询优化器的局限性关联子查询关联子查询中的WHERE条件中的IN()子查询语句;一般会被改写成为,外部嵌套查询;建议使用内联优化。进行改进UNION的限制MySQL无法将限制条件从外层”下推”到内层。使得限制条件无法应用到内层查询的优化上面。使用UNION时,应该尽量先对部分结果进行筛选,最后再进行结果集合的合并。例如:# 这条查询,会将两个集合查找20条记录进行,添加到临时表中;再筛选20条(SELECT first_name,last_name FROM sakila.acto原创 2020-10-08 19:15:48 · 177 阅读 · 1 评论 -
查询执行的基础
MySQL的一般查询流程如下:6.4.1 MySQL 客户端/服务器通信协议MySQL客户但和服务器中间的通信协议时”半双工”的。因此当查询语句较长时参数”max_allowed_packet”很重要。都是从数据库中的缓存获取数据。可以通过对MySQL的接口,进行设置取消缓冲。MySQL的查询状态(SHOW FULL PROCESSLIST进行查询)Sleep:线程正在等待客户端发送新的请求Query:线程正在执行查询或者正在将结果发送给客户端Locked:该线程正在等待表锁,InnoDB原创 2020-10-08 19:11:43 · 225 阅读 · 1 评论 -
查询性能优化
慢查询基础:优化数据访问查询的最基本的原因是 访问的数据太多。可以通过减少访问的数据两进行优化;具体步骤如下:确认应用程序是否检索大量超过需要是数据–访问行列太多查询不需要的记录:会返回所有值再筛选总是取出全部列重复查询相同的数据:例如再用户评论中–不断地重复执行相同的查询多表关联时返回全部列表:例如# 返回三个表的全部数据列SELECT * FROM sakila.actor INNER JOIN sakila.film_actor USING(actor_id)INNER原创 2020-10-08 19:06:19 · 188 阅读 · 0 评论 -
MySQL的存储引擎
MySQL的存储引擎参考链接: mysql存储引擎文件系统中,MySQL将每个数据库保存为数据目录下的一个子目录。创建表时,会创建.frm保存表的定义和数据InnoDB是默认事物型引擎,设计用来处理大量的短期(short-liived)事物,短期事物大部分正常提交,很少会被回滚。它支持排序创建索引、删除或者增加索引时不需要复制全表数据、新的支持压缩的存储格式。InnoDB可以通过间隙锁(检索条件必须有索引(没有索引的话,mysql会全表扫描,那样会锁定整张表所有的记录,包括不存在的记录,此时其他事务原创 2020-10-08 19:02:13 · 88 阅读 · 1 评论 -
查询性能优化
为什么查询速度会慢1.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快2.查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端慢查询基础:优化数据访问1.两个分析步骤:* 确认应用程序是否在检索大量超过需要的数据* 确认MySQL服务器层是否在分析大量超过需要的数据行2.是否向数据库请求了不需要的数据* 查询不需要的记录* 多表关联并返回全部列* 总是取出原创 2020-08-23 15:20:20 · 312 阅读 · 0 评论 -
MySQL中索引的类型
索引(在MySQL中也被叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。索引的类型 索引很很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层实现而不是服务器层。所以不同的存储引擎索引的工作方式不同,也不是所有存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。B-Tree索引 B-Tree索引使用B-Tree数据结构来存储数据。大多数MySQL引擎都支持这种索引,Archive引擎原创 2020-08-02 21:10:43 · 126 阅读 · 0 评论 -
InnoDB 存储引擎中的锁
InnoDB 存储引擎中的锁1.什么是锁? 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。 并且人们总是认为行级锁总会增加开销。实际上,只有当实现本身会增加开销时,行级锁才会增加开销。InnoDB 存储引擎不需要锁升级,因为一个锁和多个锁的开销是相同的。2.lock 与 latch 这里还要区分锁中容易混淆的两个概念 lock 和latch。在数据库中,lock 与 latch 都原创 2020-07-26 22:23:23 · 219 阅读 · 0 评论