首页
学习
活动
专区
圈层
工具
发布

mysql慢查询优化-分页慢查询篇

前提介绍 为何分页查询在测试环境没事,在生产上几千万的数据就出现了问题 在平时开发时,由于数据量没有那么大,所以测试有时候会不到位,比如用到的分页查询,使用不规范时,数据量越大,查询越慢,而且有 长时间进程不结束...,会导致内存不足等风险 传统分页查询:SELECT c1,c2,cn… FROM table LIMIT n,m MySQL的limit工作原理就是先读取前面n条记录,然后抛弃前n条,读后面m条想要的,...对limit的优化,不是直接使用limit,而是首先获取到offset的id,然后直接使用limit size来获取数据。...id from product limit 866613, 20) b ON a.ID = b.id 3、高性能MySQL一书中提到的只读索引方法 优化前SQL: SELECT c1,c2,cn… FROM...而优化后的SQL(子查询那条)只读索引(Cover index)就可以了,然后通过member_id读取需要的列。

4.3K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL性能优化(四)-慢查询

    1.慢查询的用途 它能记录下所有执行超过longquerytime时间的SQL语句,帮我们找到执行慢的SQL,方便我们对这些SQL进行优化。...4.设置慢查询记录的时间 查询慢查询记录的时间:show variables like 'longquery%',默认是10秒钟,意思是大于10秒才算慢查询。...在我们重新执行刚刚的查询sql后,查询慢查询的次数会变为8 ? 当然,用 more /var/lib/mysql/localhost-slow.log 也是可以看到详细结果的。...在生产中,我们会分析查询频率高的,且是慢查询的sql,并不是每一条查询慢的sql都需要分析。...7.慢查询日志分析工具Mysqldumpslow 由于在生产上会有很多慢查询,所以采用上述的方法查看慢查询sql会很麻烦,还好MySQL提供了慢查询日志分析工具Mysqldumpslow。

    1.3K10

    Mysql性能优化——慢查询分析

    除了服务器硬件的性能瓶颈,对于Mysql系统本身,我们可以使用工具来优化数据库的性能,通常有三种:使用索引,使用 EXPLAIN分析查询以及调整MYSQL的内部配置。...一、查询与索引优化分析 在优化mysql时,通常需要对数据库进行分析,常见的分析手段有慢查询日志, EXPLAIN分析查询, profiling分析以及show命令查询系统状态及系统变量...extended-status -u username -ppassword ——显示状态信息 其余show命令可以参考:mysql >help show 2、慢查询日志 慢查询日志开启方法一:...慢查询日志开启方法二: 通过命令行设置变量来即时启动慢查询日志 ? 查看慢查询的设置信息 ? 打开慢查询日志文件查看 ?...优化上面的慢查询 ? ? 二、explain分析查询 使用explain可以模拟优化器执行sql查询语句,从而知道mysql是如何处理你的sql语句的。

    1.7K20

    MySQL慢查询优化 | 联结原理

    前段时间笔者开发某个项目遇到了MySQL性能问题,每张表的数据量都在五千万以上,个别表数据量甚至在一个亿以上,在开发的过程中遇到了非常多的数据库性能优化难点,笔者在开发过程中查询了很多资料,很多查询语句也在优化过程中取得了比较好的效果...只能对索引进行范围查找是MRR的缺陷,于是又有了BKA优化,batch key access join是mysql 5.6提出优化方案,它在关联查询中获取一批rowid,然后将这批rowid进行排序,再回表查找...驱动表优化 文末笔者还想谈一谈表联结中驱动表。Mysql联接优化的目标是尽可能减少nested loop join 总数,关联查询时候,必须以某张表作为驱动表。...mysql查询优化器优先选择小表作为驱动表,小表不仅仅指表的真实行数或者磁盘空间大小,也包括了两个表按照各自条件过滤后的表。...但是mysql查询优化器有时候会判断出错,选择了大表作为驱动表。

    1.5K10

    MySQL 慢查询是怎样优化的

    为什么查询速度会慢1.慢是指一个查询的响应时间长。一个查询的过程:客户端发送一条查询给服务器服务器端先检查查询缓存,如果命中了缓存,则立可返回存储在缓存中的结果。...否则进入下一个阶段服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询。...将结果返回给客户端2.数据访问是否向数据库请求了不需要的数据是否扫描额外的记录3.查询的方式一个复杂的查询还是多个简单的查询切分查询(将大查询切分成小查询,循环完成小查询)分解关联查询慢查询分析问题SQL...预处理则会根据MySQL规则进一步检查解析树是否合法。比如检查要查询的数据表和数据列是否存在等。查询优化器经过前面的步骤生成的语法树被认为是合法的了,并且由优化器将其转化成查询计划。...MySQL的查询优化器是一个非常复杂的部件,它使用了非常多的优化策略来生成一个最优的执行计划:重新定义关联表的顺序将外连接转化成内连接使用等价变换规则优化count()、min()、max()预估并转化为常数表达式覆盖索引描述子查询优化提前终止查询等值传播列表

    38400

    MySQL索引原理及慢查询优化

    本人从13年7月份起,一直在美团核心业务系统部做慢查询的优化工作,共计十余个系统,累计解决和积累了上百个慢查询案例。随着业务的复杂性提升,遇到的问题千奇百怪,五花八门,匪夷所思。...本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化慢查询。...慢查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的慢查询,了解完索引原理之后,大家是不是有什么想法呢?...所以优化语句基本上都是在优化rows。 慢查询优化基本步骤 0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE 1.where条件单表查,锁定最小返回记录表。...写在后面的话 本文以一个慢查询案例引入了MySQL索引原理、优化慢查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    2.6K30

    系统优化:MYSQL慢查询和日志

    一、简介 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。...默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。...慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。...二、参数说明 slow_query_log 慢查询开启状态 slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)...四、测试 1.执行一条慢查询SQL语句 mysql> select sleep(2); 2.查看是否生成慢查询日志 ls /usr/local/mysql/data/slow.log 如果日志存在,MySQL

    1.3K30

    MySQL索引原理及慢查询优化

    在微信公众号"数据库开发"里看到的这篇文章,写的很好,就转载了 出处:美团技术博客 链接:http://tech.meituan.com/mysql-index.html MySQL索引原理及慢查询优化...本人从13年7月份起,一直在美团核心业务系统部做慢查询的优化工作,共计十余个系统,累计解决和积累了上百个慢查询案例。随着业务的复杂性提升,遇到的问题千奇百怪,五花八门,匪夷所思。...本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化慢查询。...慢查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的慢查询,了解完索引原理之后,大家是不是有什么想法呢?...写在后面的话 本文以一个慢查询案例引入了MySQL索引原理、优化慢查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    1.5K40

    mysql:索引原理与慢查询优化

    =和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式 #3.尽量选择区分度高的列作为索引,...所以优化语句基本上都是在优化rows。...userinfo3 where email='alex' type: const(走索引) http://blog.itpub.net/29773961/viewspace-1767044/ 七 慢查询优化的基本步骤...服务器启动、关闭及运行错误等信息 二进制日志: 又称binlog日志,以二进制文件的方式记录数据库中除 SELECT 以外的操作 查询日志: 记录查询的信息 慢查询日志: 记录执行时间超过指定时间的操作...=dir\[filename]] # service mysqld restart 三、慢查询日志 启用慢查询日志 # vim /etc/my.cnf [mysqld] log-slow-queries

    3K80

    常见mysql的慢查询优化方式

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中...慢查询日志相关参数 MySQL 慢查询的相关参数解释: slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。...一,第一步.开启mysql慢查询 方式一: 修改配置文件 在 my.ini 增加几行: 主要是慢查询的定义时间,以及慢查询log日志记录( slow_query_log) 方法二:通过MySQL...数据库开启慢查询: 二,分析慢查询日志 直接分析mysql慢查询日志 ,利用explain关键字可以模拟优化器执行SQL查询语句,来分析sql慢查询语句 例如:执行 EXPLAIN SELECT...这个技术也可以用在优化关联查询中的limit。

    8.3K40

    mysql慢查询优化-内存清理篇

    前提介绍 同样的mysql,同样的查询,为啥在不同的服务器上的查询效率差别有10几倍 继上一篇索引优化后,在自己的服务器上已经从10几秒优化到了2s,以为万事大吉了, 谁知道,同样的操作,在客户的服务器上优化后...,还是比本机慢了10几倍 当然了,客户服务器上添加完索引后,相对之前已经快了不少,sql查询已经优化到了极点 为什么会比自己的服务器慢10几倍呢?...image.png 查询存在的连接数 在mysql 输入 show processlist ;查询存在的连接数以及timeout的时间,可以帮助识别出有问题的查询语句 发现有好多造成查询慢的语句 mysql...最大值31536000 此处我们设置100 image.png 设置完之后查看cpu占用率(设置完之后不确定会不会马上降低) 但是cpu占用率确实降 了一半 image.png kill锁表语句与慢sql...研究了一下,怎么kill掉慢的sql语句 1 单个killmysql> show processlist;mysql > kill 251;2 批量kill2.1查找Lockd语句mysql -uroot

    3.3K20

    MySQL 之 索引原理与慢查询优化

    浏览目录 一 索引介绍 二 索引方法 三 索引类型 四 聚合索引和辅助索引  五 测试索引 六 正确使用索引 七 组合索引 八 注意事项 九 查询计划 十 慢日志查询 十一 大数据量分页优化 1....没有那么笨,where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样 select * from mytable where a=3 and c=7;   #a用到索引,b没有用,所以...慢查询日志    将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。...查看 MySQL慢日志信息 #.查询慢日志配置信息 : show variables like '%query%'; #.修改配置信息 set global slow_query_log = on...'; 测试慢查询日志 #查询时间超过10秒就会记录到慢查询日志中 select sleep(3) FROM user ; #查看表中的日志 select * from mysql.slow_log

    1.7K70

    干货:MySQL 索引原理及慢查询优化

    本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化慢查询。...慢查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的慢查询,了解完索引原理之后,大家是不是有什么想法呢?...所以优化语句基本上都是在优化rows。 慢查询优化基本步骤 0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE 1.where条件单表查,锁定最小返回记录表。...3.order by limit 形式的sql语句让排序的表优先查 4.了解业务方使用场景 5.加索引时参照建索引的几大原则 6.观察结果,不符合预期继续从0分析 几个慢查询案例 下面几个例子详细解释了如何分析和优化慢查询...写在后面的话 本文以一个慢查询案例引入了MySQL索引原理、优化慢查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    79930

    【知识】MySQL索引原理及慢查询优化

    慢查询优化 4.1 MySQL Explain详解 我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain...from子句 4.2 慢查询优化案例 4.2.1 复杂的深分页问题优化 背景 有一个article表,用于存储文章的基本信息的,有文章id,作者id等一些属性,有一个content表,主要用于存储文章的内容...,status为1的文章,我们本来就是针对create_time建了单列索引,结果在慢查询日志中发现了这条语句,查询时间需要0.91s左右,所以开始尝试着进行优化。...参考 (1)MySQL索引原理及慢查询优化 https://tech.meituan.com/2014/06/30/mysql-index.html (2)MySQL Explain详解 https:...//www.cnblogs.com/tufujie/p/9413852.html (3)MySQL慢查询优化(线上案例调优)https://www.cnblogs.com/notfound9/p/12928763

    1.5K30

    MYSQL之索引原理与慢查询优化

    没有那么笨,where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样 select * from mytable where a=3 and c=7;   #a用到索引,b没有用,所以...其他数据库中使用count(1)或count(列) 代替 count(*),而mysql数据库中count(*)经过优化后,效率与前两种基本一样. 3....连表时注意条件类型需一致 10.索引散列值不适合建索引,例:性别不适合 二、查询与慢日志 1、查询计划  explain + 查询SQL - 用于显示SQL执行信息参数,根据参考信息可以进行SQL优化...慢日志查询 将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。...'; 测试慢日志查询 #查询时间超过10秒就会记录到慢查询日志中 select sleep(3) FROM user ; #查看表中的日志 select * from mysql.slow_log

    1.6K130
    领券