mysql中count(x)到底慢不慢

phpmianshi3年前 (2017-05-28)Mysql21
总结MyISAM 表不支持事务,但是count(*) 很快,因为他直接记录了一个总数MyISAM在统计表的总行数的时候会很快,但是有个大前提,不能加有任何WHERE条件。这是因为:MyISAM对于表的...

mysql中找出无用的索引或重复索引

phpmianshi3年前 (2017-05-23)Mysql23
背景MySQL允许在相同列上创建重复的索引,但这样做对数据库却是有害而无利的,需要定期检查此类重复索引以改善数据库性能。可减少磁盘空间占用、减少磁盘IO、减少优化器优化查询时需要比较的索引个数、减少数...

mysql中performance_schema(三) 实践篇

phpmianshi3年前 (2017-05-21)Mysql23
背景前一篇文章我们分析了performance_schema中每个表的用途,以及主要字段的含义,比较侧重于理论的介绍。这篇文章我主要从DBA的角度出发,详细介绍如何通过performance_sche...

mysql中performance_schema(二) 理论篇

phpmianshi4年前 (2017-05-20)Mysql33
背景mysql performance_schema中总共包含52个表,主要分为几类:Setup表,Instance表,Wait Event表,Stage Event表Statement Ev...

mysql中performance_schema(一)配置篇

phpmianshi4年前 (2017-05-18)Mysql26
背景    performance_schema最早在MYSQL 5.5中出现,而现在5.6,5.7中performance_schema又添加了更多的监控项,统计信息也...

mysql常见面试题第一讲

phpmianshi4年前 (2017-05-10)Mysql40
mysql常见面试题第一讲
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键...

mysql中行锁、两阶段锁协议、死锁以及死锁检测

phpmianshi4年前 (2017-05-09)Mysql28
mysql中行锁、两阶段锁协议、死锁以及死锁检测
行锁MySQL的行锁都是在引擎层实现的,但是 MyISAM 不支持行锁,意味着并发控制只能使用表锁,同一张表任何时刻只能被一个更新在执行,影响到业务并发度。InnoDB 是支持行锁的,这也是 MyIS...

mysql中长事务详解

phpmianshi4年前 (2017-05-08)Mysql35
什么是长事务运行时间比较长,长时间未提交的事务,也可以称之为大事务。这类事务往往会造成大量的阻塞和锁超时,容易造成主从延迟,要尽量避免使用长事务。下面我将演示下如何开启事务及模拟长事务:#假设我们有一...

mysql中CPU或内存利用率过高问题

phpmianshi4年前 (2017-05-06)Mysql53
CPU 利用率过高原因在 MySQL 使用过程中,出现 CPU 利用率过高甚至超过100%时,与数据库存在低效 SQL 或大量行锁冲突有非常大的关系,一般都是由于大量低效的 SQL 导致,出现行锁冲突...

InnoDB体系结构及工作原理

phpmianshi4年前 (2017-04-27)Mysql50
InnoDB体系结构及工作原理
概念InnoDB主要包括了内存池、后台线程以及存储文件。INNODB的三大特性:插入缓存,两次写,自适应hash内存池又是由多个内存块组成的,主要包括Buffer Pool、redo log缓冲等,解...

mysql中一条sql语句是如何执行的

phpmianshi4年前 (2017-04-26)Mysql43
架构mysql是一种单进程多线程的架构,mysql server层的核心组件:连接器、查询缓存、分析器、优化器、执行器一条sql语句是如何执行的客户端发送一条查询给服务器服务器先检查查询缓存,如果命中...

mysql中AnalyzeTable优化

phpmianshi4年前 (2017-04-25)Mysql69
Analyze TableMySQL的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列...

mysql中QueryCache优化

phpmianshi4年前 (2017-04-24)Mysql65
原理 MySQL 的 Query Cache 实现原理实际上并不是特别的复杂,简单的来说就是将客户端请求的 Query 语句(当然仅限于 SELECT 类型的 Query)通过一定的 has...

mysql中distinct的实现与优化

phpmianshi4年前 (2017-04-23)Mysql62
概念DISTINCT 实际上和 GROUP BY的操作非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没...

mysql中group by的实现与优化

phpmianshi4年前 (2017-04-22)Mysql69
mysql中group by的实现与优化
概念    由于 GROUP BY 实际上也同样需要进行排序操作,而且与 ORDER BY 相比,GROUP BY 主要只是多了 排序之后的分组操作。当然,如果在分组的时...

mysql中order by的实现与优化

phpmianshi4年前 (2017-04-21)Mysql72
mysql中order by的实现与优化
概念在 MySQL 中,ORDER BY 的实现有如下两种类型: ◆ 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端 要求的有序数据返回给客户端; ◆ 另外一种则需...

mysql中Join的实现原理及优化思路

phpmianshi4年前 (2017-04-20)Mysql80
mysql中Join的实现原理及优化思路
实现原理在MySQL中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,...

mysql中Query语句优化基本思路和原则

phpmianshi4年前 (2017-04-19)Mysql68
基本思路和原则在分析如何优化 MySQL Query 之前,我们需要先了解一下 Query 语句优化的基本思路和原则。一般来说,Query 语句的优化思路和原则主要体现在以下几个方面: 1. 优化更需...

mysql中Query语句对系统性能的影响

phpmianshi4年前 (2017-04-18)Mysql77
背景我们重点分析实现同样功能的不同 SQL语句在性能方面会产生较大的差异的根本原因,并通过一个较为典型的示例来对我们的分析做出相应的验证。为什么返回完全相同结果集的不同SQL语句,在执行性能方面存在差...

mysql中优化器是如何选择索引的

phpmianshi4年前 (2017-04-17)Mysql76
一:概念  - 在 索引建立之后,一条语句可能会命中多个索引,这时,索引的选择,就会交由 优化器 来选择合适的索引。  - 优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执...