mysql索引与优化
文章平均质量分 81
mysql索引与优化
时而宁靜
空谈误国,实干兴邦
展开
-
Mysql-各种锁区分与【MVCC】
mysql的锁貌似有很多啊,查了大部分资料,什么表锁,行锁,页锁共享锁,排他锁,意向锁,读锁,写锁悲观锁,乐观锁。。我去,真想问一句,有没有 金锁?我还范冰冰呢。。。哎呀怎么感觉好乱啊。那么把它好好整理总结下吧。后边还有对在innodb下的mvcc理解与举例,简单易懂了解下。表/行/页-锁:表级锁(table-level locking):M原创 2017-02-17 00:54:41 · 7045 阅读 · 2 评论 -
MySQL索引原理及慢查询优化
本文转自:http://tech.meituan.com/mysql-index.htmlMySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统转载 2016-05-01 22:33:51 · 1078 阅读 · 0 评论 -
Mysql分析-show PROCESSLIST
上回做一个投票系统,一道活动高峰期久卡的要命,临时调高带宽效果也不明显。上服务器进行分析,top里面大量的CPU都消耗在IO wait上。种种迹象都指向mysql,又是慢日志查询,又是查看索引结构,都感觉没找到根本问题。终于,在show processlist的时候发现了由大量的lock进程。哈哈,问题显而易见嘛。该投票表使用的是mysiam引擎,投票量起来以后update把表给锁了,原创 2017-02-16 00:39:54 · 1206 阅读 · 0 评论 -
Mysql分析-常用分析语句总结
我们有时候会碰到mysql数据库出错或变慢的时候,这时候就需要我们来看看基本的一些情况一条糟糕的SQL语句可能让你的整个程序都非常慢,是连接数过多?表结构有问题?表的索引没有加?。。下边是我常用的一些mysql分析语句,做一个记录。序号语句作用 1show PROCESSLIST;显示系统中正在运行的所有进程,也就原创 2017-02-06 22:41:38 · 3113 阅读 · 0 评论 -
Mysql优化-大数据量下的分页策略
一。前言通常,我们分页时怎么实现呢?SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但是,数据量猛增以后呢?SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 如上第二条查询时很慢的,直接拖死。最关键的原因:mysql查询机制,不是先跳过,后查询原创 2017-02-06 22:40:47 · 1830 阅读 · 0 评论 -
Mysql分析-profile详解
一。前言当我们要对某一条sql的性能进行分析时,可以使用它。Profiling是从 mysql5.0.3版本以后才开放的。启动profile之后,所有查询包括错误的语句都会记录在内。关闭会话或者set profiling=0 就关闭了。(如果将profiling_history_size参数设置为0,同样具有关闭MySQL的profiling效果。)此工具可用来原创 2017-02-06 22:42:16 · 23760 阅读 · 0 评论 -
Mysql分析-awk+Threads分析状态
当我们想了解当前mysql连接情况,分析其运行状态,那该如何查看呢?登录mysql数据库后,show status();会发现其中有一向【query】此query查询栏目,表示当前时间发生过的查询次数,要想知道一段时间的查询次数,查询两次做差即可。当前query - 10分钟后的query = 此十分钟的查询数再往下 有【Threads】相关栏目原创 2017-02-06 22:42:32 · 2055 阅读 · 0 评论 -
Mysql优化-Procedure_Analyse优化表结构
一。前言PROCEDURE ANALYSE() ,在优化表结构时可以辅助参考分析语句。利用此语句,MySQL 帮你去分析你的字段和其实际的数据,并会给你一些有用的建议。【只有表中有实际的数据,这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的。】 例如,如果你创建了一个 INT 字段作为你的主键,然而并没有太多的数据,那么,PROCEDURE ANAL原创 2017-02-06 22:41:03 · 4267 阅读 · 1 评论 -
Mysql分析-explain
了解explain原因:想了解select查询的内部情况,查询优化器是如何工作的,是否使用到了索引,explain可以做到。MySQL查询优化器是如何工作的 :MySQL查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交SELECT语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度原创 2016-11-15 22:11:49 · 1151 阅读 · 0 评论 -
Mysql优化与索引总分析【图解】
一.为什么别人问你MySQL优化的知识 总是没有底气1.因为你只是回答一些大而化之的调优原则,a.比如:”建立合理索引”(什么样的索引合理?)b.“分表分库”(用什么策略分表分库?)c.“主从分离”(用什么中间件?)2.没有从细化到定量的层面去分析.a.如qps提高了%N?b.有没有减少文件排序?c.语句的扫描行数减少了多少?原创 2016-11-30 21:17:53 · 1434 阅读 · 0 评论 -
Mysql-索引总结
索引(Index)是帮助MySQL高效获取数据的数据结构。下边是自己整理的资料与自己的学习总结,,做一个汇总。一.真的有必要使用索引吗?不是每一个性能问题都可以通过创建一个索引来解决;有很多其它解决性能问题的方式;各个应用层的缓存,调优数据库参数和缓冲区大小,调优数据库连接池大小或者线程池大小,原创 2016-12-08 23:02:28 · 2357 阅读 · 0 评论 -
Mysql-索引-BTree类型【精简】
网络上看了很多关于B-TREE的总结,b树,B-树,B+树,B*树(艾玛怎么还4个呢?都快蒙圈了呢),有的真的很精彩令人佩服,但是都是篇幅太长啊,一大长段的文字就让人望而生畏啊。干脆做一个简化版的总结,通俗移动点介绍下,说说他们的区别。一.B树Binary Tree,就是一个二叉树。(什么K呀h,n啥的公式这里不说了,有兴趣的可以自己搜搜..)(1)所有原创 2016-12-08 23:37:06 · 25942 阅读 · 6 评论 -
Mysql-索引排序行
上一篇刚刚通俗化的说明了B-TREE的几个结果与存储方式,其实跟索引感觉上还是没有关联起来,那么本篇,就通过实际的一个数据行的例子,说明一下。一.模拟创建原始数据左边是自己方便说明,模拟的数据。引擎为mysiam~右边是用EXCEL把它们随机排列后的一个正常仿真数据表,把主键按照1-27再排列(不随机的话我在模拟数据时本来就是按顺序写的,再加索引看不大出这个索引原创 2016-12-08 23:43:09 · 2449 阅读 · 1 评论 -
Mysql-索引数据结构
昨晚北京迎来了2016入冬的第一场雪呀,爽歪歪。11.20号,mark一下一.前言:在我们的生活中,导出可以看到索引效果的应用,如在火车站观看的车次表、字典的目录等。它们的作用就是索引的作用,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据(字典的A-Z查找)。生活举例-乘火车:我去乘原创 2016-12-11 19:33:34 · 1965 阅读 · 0 评论 -
Mysql-索引优化策略
本节后边通过实际易懂的举例,来说明索引实际的触发,从而优化自己在加索引时使用的策略。一.索引类型1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,比如,严格的说,NDB引擎,使用的是T-tree,Myisam,innodb中,默认用B-tree索引但抽象一下---B-tree系统,可理解为”排好序的快速查找结原创 2016-12-11 20:33:59 · 1777 阅读 · 0 评论 -
Mysql-聚簇索引
整体概述1.innodb的主索引文件上 直接存放该行数据,称为聚簇索引,次索引指向对主键的引用2.myisam中,主索引和次索引,都指向物理行(磁盘位置)哈哈,说了两句貌似听不懂的话。一。通俗解释我们可以这么理解:聚簇索引(innodb):索引的叶节点就是数据节点,下边实打实有数据。非聚簇索引(myisam): 叶节点仍然是索引节点,有指针指向对应的原创 2016-12-11 20:35:03 · 4222 阅读 · 0 评论 -
Mysql-索引覆盖
索引是一个利于查找的数据结构,而且还缓存在内存中,用索引查找出物理行地址非常快,但是从物理行中提取出(回行)需要的字段值,就会慢一点了。查询索引是快的,利用索引从物理磁盘中找到要的所有数据(回行)是慢的。如上图,索引是usename,如果select的字段有id,username,age..那么得去物理行提取数据;如果select id 那么索引里就存着呢,不用去找原创 2016-12-11 20:34:53 · 1521 阅读 · 0 评论 -
Mysql-聚簇索排序慢案例分析
为什么当 执行select较多时,应当使用mysiam引擎呢?尤其是在有索引的情况下本篇章依托一个实际应用,分析一下。一.前言:网上看到有一个有趣的现象,一个有1W数据量的表,执行不同的orderby条件,查询时间非常大,这个是实际应用中确实出现的问题??为什么呢?二.分析a).情况描述:1.有主键id,联合索引(id,ver);用前原创 2016-12-11 20:35:12 · 3536 阅读 · 1 评论