- 博客(17)
- 资源 (18)
- 收藏
- 关注
原创 mysql中优化器是如何选择索引的
参考:https://phpmianshi.com/?id=148一:概念 - 在 索引建立之后,一条语句可能会命中多个索引,这时,索引的选择,就会交由优化器 来选择合适的索引。 -优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。二:优化器选择索引的原则? -在数据库里面,扫描行数是影响执行代价的因素之一。 -扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少。 -当然,扫描行数并不是唯一的判断标准,优化器还...
2020-08-31 16:21:20 586
原创 mysql中explain分析sql详解
参考:https://phpmianshi.com/?id=147Explain举例 mysql>explainselect*fromevent; +—-+————-+——-+——+—————+——+———+——+——+——-+ |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra| +—-+————-+——-+—...
2020-08-28 15:17:23 98
原创 innodb中内存管理机制BufferPool
参考:https://phpmianshi.com/?id=143内存结构InnoDB主索引是聚簇索引,索引与数据共用表空间,对于InnoDB而言,数据就是索引,索引就是数据。InnoDB缓存机制和MyISAM缓存机制的最大区别就是在于,InnoDB不仅仅是缓存索引,还会缓存数据。InnoDB缓存池InnoDB缓存池(InnoDB buffer pool)是InnoDB性能提升的核心,它既可以缓存数据还可以缓存索引,甚至其他管理数据(例如元数据信息,行级锁信息)。查看InnoDB.
2020-08-26 09:28:19 420
原创 innodb中统计数据是如何收集的
参考:https://www.phpmianshi.com/?id=142InnoDB 统计数据如何查看1. 通过SHOW TABLE STATUS可以看到关于表的统计数据2. 通过SHOW INDEX可以看到关于索引的统计数据InnoDB提供了两种存储统计数据的方式1. 永久性的统计数据:这种统计数据存储在磁盘上,也就是服务器重启之后这些统计数据还在。2. 非永久性的统计数据:这种统计数据存储在内存中,当服务器关闭时这些这些统计数据就都被清除掉...
2020-08-24 09:45:06 401
原创 mysql中性能分析Profiling
参考:https://www.phpmianshi.com/?id=138概念Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于Sql调优的测量。示例1、先查看是否开启了此功能,默认情况下,参数处于关闭状态,为OFF状态show variables like 'profiling%';2、开启Profiling:setprofiling=1;3、展示最近的SQL执行情况:s...
2020-08-21 18:25:16 289
原创 mysql中eq_range_index_dive_limit参数学习
参考:https://www.phpmianshi.com/?id=137概念官方文档如下描述:This variable indicates the number of equality ranges in an equality comparison condition when the optimizer should switch from using index dives to index statistics in estimating the number of qualifyin
2020-08-18 20:53:20 2891
原创 mysql中数据页的相关概念
参考:https://www.phpmianshi.com/?id=136概念在 InnoDB 存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page),他们之间的关系如下:数据页页是mysql中磁盘和内存交换的基本单位,也是mysql管理存储空间的基本单位。同一个数据库实例的所有表空间都有相同的页大小;默认情况下,表空间中的页大小都为 16K..
2020-08-17 20:24:29 5653
原创 mysql中index_merge索引合并优化
参考:https://phpmianshi.com/?id=135前言深入理解 index merge 是使用索引进行优化的重要基础之一。理解了 index merge 技术,我们才知道应该如何在表上建立索引。MySQL在分析执行计划时发现走单个索引的过滤效果都不是很好,对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)。我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 in
2020-08-14 12:01:13 1792
原创 MySQL可重复读隔离级别的实现原理
参考:https://www.phpmianshi.com/?id=23原理MySQL默认的隔离级别是可重复读,即:事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。 那么MySQL可重复读是如何实现的呢?使用的的一种叫MVCC的控制方式 ,即Mutil-Version Concurrency Control,多版本并发控制,类似于乐观锁的一种实现方式实现方式InnoDB在每行记录后面保存两个隐藏的列来,分别保存了这个行的创.
2020-08-13 13:36:51 227
原创 mysql中优化必读
参考:https://www.phpmianshi.com/?id=24通用规则多读少写加缓存,少读多写加队列带事务的不要整体commit,分段commit一、要保证数据库的效率,要做好以下四个方面的工作:① 数据库设计② sql语句优化③ 数据库参数配置④ 恰当的硬件资源和操作系统二、通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解):第一范式:1.
2020-08-12 09:52:32 116
原创 InnoDB的七种锁
参考:https://www.phpmianshi.com/?id=22InnoDB的七种锁1. 自增锁(Auto-inc Locks)2. 共享/排他锁(Shared and Exclusive Locks)3. 意向锁(Intention Locks)4. 插入意向锁(Insert Intention Locks)5. 记录锁(Record Locks)6. 间隙锁(Gap Locks)7. 临键锁(Next-Key Locks)相关名词|--表级锁(..
2020-08-11 17:06:51 459
原创 Mysql B+树索引常见面试题
参考:https://www.phpmianshi.com/?id=21概念一个经典的B+树索引数据结构见下图:B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。因此,B+树索引被广泛应用于数据库、文件系统等场景。顺便说一下,xfs文件系统比ext3/ext4效率高很多...
2020-08-09 19:38:48 2143
原创 MyISAM与InnoDB的区别
参考:https://www.phpmianshi.com/?id=77MyISAM与InnoDB的区别是什么?这是一个常见的面试题,我们要具从不同的角度解读一下。1、存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)。InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),I...
2020-08-09 13:00:04 68
转载 最近网上在讨论一段非常简短的代码,其方法让人落泪
最近网上在讨论一段非常简短的代码,不需要太多 JavaScript 背景也能看懂,但其方法让人落泪。网友点评:网友 @sim642我很欣赏 "true" === "true" 那一行。网友 @hearwa我很认可他注释提到的 Todo 任务,JavaScript 应当存成另外一个文件。网友 @goomymanTODO 是不是作用主要堵住后面人吐槽,“你不说我也知道现在做法不规范”你还见过哪些奇葩的代码?欢迎评论爆料...
2020-08-07 16:44:17 163
原创 Laravel中用到的设计模式
参考:https://www.phpmianshi.com/?id=891:工厂模式Auth::user()此处Auth这个类就是工厂中的方法,Auth是注册树中的别名。好处:类似于函数的封装,使对象有一个统一的生成(实例化)入口。当我们对象所对应的类的类名发生变化的时候,我们只需要改一下工厂类类里面的实例化方法即可。2:单例模式好处:对象不可外部实例化并且只能实例化一次,节省资源。实现方式:privatestatic$ins=null;...
2020-08-03 20:32:24 779
原创 Laravel神奇的IoC容器
Laravel 的核心就是一个IoC 容器,根据文档,称其为“服务容器”通过举例来让读者去理解什么是IoC(控制反转)和DI(依赖注入)超人和超能力,依赖的产生!我们把一个“超人”作为一个类,一个超人肯定拥有至少一个超能力,这个超能力也可以抽象为一个对象。classPower{/***能力值*/protected$ability;/***能力范围或距离*/protected...
2020-08-02 11:31:36 260
原创 Laravel中的基本概念
参考:https://www.phpmianshi.com/?id=37一.什么是 DI依赖注入/IOC控制反转DI依赖注入啥都不说,直接上代码<?phpclassUserController{private$user;function__construct(UserModel$user){$this->user=$user;}}$u...
2020-08-02 10:35:04 199
TexturePacker-3.1.2 for mac 破解版
2016-07-20
extJS中文手册 extJS中文手册
2010-03-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人