衣舞晨风

勿忘初心

查看MySQL InnoDB 表索引的高度

在看《MySQL技术内幕:InnoDB存储引擎》B+树索引章节中看到这么一句话: 但是B+索引在数据库中有一个特点就是高扇出性,因此在数据库中,B+树的高度一般都在2-4层,也就是说查找某一键值的行记录时最多只需要2-4次IO。因为当前一般的机械磁盘每秒至少可以做100次IO,2-4次的IO...

2019-02-18 21:10:38

阅读数 36

评论数 0

Databus for MySQL

Introduction A frequently asked question on the Databus open source mailing list is about the possibility of capturing changes in MySQL through Datab...

2018-12-31 16:32:44

阅读数 136

评论数 0

MySQL技术内幕 InnoDB存储引擎:事务

一、认识事务 InnoDB储存引擎中的事务完全符合ACID的特性。ACID是以下4个词的缩写: 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。 一致性(consistency):数据库总是从一个一致性的...

2018-10-19 07:49:19

阅读数 129

评论数 1

MySQL技术内幕 InnoDB存储引擎:阻塞、死锁、锁升级

1、堵塞 因为不同锁之间的兼容性关系,在有些时刻一个事务中的锁需要等待另外一个事务中的锁释放它所占用的资源,这就是堵塞。 参数innodb_lock_wait_timeout用来控制等待的时间,默认50秒,是可以动态设置的。 参数innodb_rollback_on_timeout用来设...

2018-10-18 06:53:18

阅读数 266

评论数 1

MySQL技术内幕 InnoDB存储引擎:锁问题(脏读、不可重复读)

1、脏读 在理解脏读(Dirty Read)之前,需要理解脏数据的概念。但是脏数据和之前所介绍的脏页完全是两种不同的概念。脏页指的是在缓冲池中已经被修改的页,但是还没有刷新到磁盘中,即数据库实例内存中的页和磁盘中的页的数据是不一致的,当然在刷新到磁盘之前,日志都已经被写人到了重做日志文件中。而所...

2018-10-18 06:30:36

阅读数 153

评论数 2

MySQL技术内幕 InnoDB存储引擎:外键与锁

外键主要用于引用完整性的约束检查。在InnoDB存储引擎中,对于一个外键列,如果没有显示地对这个列加索引,InnoDB存储引擎会自动对其加一个索引,因为这样可以避免表锁。 这比Oracle数据库做得好,Oracle数据库不会自动添加索引,用户必须自己手动添加,这也导致了Oracle数据库中可能产生...

2018-10-17 08:23:18

阅读数 76

评论数 0

MySQL技术内幕 InnoDB存储引擎:行锁的3种算法

1、lock与latch 在数据库中,lock与latch都可以成为锁,但两者有截然不同的含义 latch 一般称为闩锁(轻量级的锁) 因为其要求锁定的时间非常短,若持续时间长,则应用性能非常差,在InnoDB存储引擎中,latch有可以分为mutex(互斥锁)和rwlock(读写锁)其目的用...

2018-10-17 08:17:32

阅读数 88

评论数 0

MySQL技术内幕 InnoDB存储引擎:B+树索引的使用

1、联合索引 MySQL允许对表上的多个列进行索引,联合索引的创建方法与单个索引创建的方法一样,不同之处仅在于有多个索引列。 CREATE TABLE t( a INT, b INT, PRIMARY KEY(a), KEY idx_a_b(a, b) )ENGINE=InnoDB ...

2018-10-16 08:06:10

阅读数 137

评论数 0

MySQL技术内幕 InnoDB存储引擎:Cardinality

并不是所有在查询条件中出现的列都需要添加索引,对于什么时候添加B+树索引,一般的经验是,在访问表中很少一部分行是使用B+树索引才有意义。查看索引是否是高选择性的,可以通过SHOW INDEX语句中的Cardinality列来观察。Cardinality是一个估计值,在实际中,Cardinality...

2018-10-15 19:55:29

阅读数 58

评论数 0

MySQL技术内幕 InnoDB存储引擎:B+树索引

B+ 树索引并不能找到一个给定键值的具体行。 B+ 树索引能找到的只是被查找数据所在的页。 然后数据库通过把页读入到内存, 再在内存中进行查找, 最后得到要查找的数据。 平衡二叉树 平衡二叉树的定义如下:首先符合二叉查找树的定义,其次必须满足任何节点的两个字数的高度最大差为1。最好的...

2018-10-15 08:56:40

阅读数 77

评论数 0

MySQL技术内幕 InnoDB存储引擎:分区表

一、MySQL分区表介绍 分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。 分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分...

2018-10-13 10:20:17

阅读数 143

评论数 0

MySQL技术内幕 InnoDB存储引擎:一致性锁定读

在前一小节中讲到,在默认配置下,即事务的隔离级别为 REPEATABLE READ 模式下, InnoDB 存储引擎的 SELECT 操作使用一致性非锁定读。但是在某些情况下,用户需要显式地对数据库读取操作进行加锁以保证数据逻辑的一致性。而这要求数据库支持加锁语句,即使是对于SELECT的只读操作...

2018-10-11 21:22:08

阅读数 47

评论数 0

MySQL技术内幕 InnoDB存储引擎:一致性非锁定读

一致性的非锁定行读(consistent nonlocking read)是指InnoDB存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果读取的行正在执行DELETE、UPDATE操作,这是读取操作不会因此而会等待行上锁的释放,相反,Inn...

2018-10-11 21:13:47

阅读数 52

评论数 0

MySQL 查询所有表中的记录数

USE information_schema; SELECT table_name, table_rows FROM TABLES WHERE TABLE_SCHEMA = 'lts' ORDER BY table_rows DESC; 效果如下: 作者...

2017-03-19 07:38:26

阅读数 403

评论数 0

MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用My...

2017-01-20 16:30:33

阅读数 322

评论数 0

NAVICATE 修改存储过程提示PROCEDURE _Navicat_Temp_Stored_Proc already exists 解决方法

今天在写存储过程保存的时候,突然提示下面的错误:PROCEDURE _Navicat_Temp_Stored_Proc already exists 解决办法: DROP PROCEDURE _Navicat_Temp_Stored_Proc 搞定

2017-01-12 19:24:57

阅读数 3147

评论数 0

MySql 存储过程 临时表 无法插入数据

今天在写存储过程的时候,发现一个问题就是,sql明明能查出数据,为啥无法插入到临时表、实体表呢? 存储过程截取如下:BEGIN /******************************** **作者:jiankunking **功能:demo **日期:20...

2017-01-11 12:26:26

阅读数 1825

评论数 1

MySql 锁表 查找 命令

1、查询是否锁表show OPEN TABLES where In_use > 0;2、查询进程show processlist查询到相对应的进程,然后 kill id 3、查看正在锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; ...

2016-12-21 20:32:36

阅读数 688

评论数 0

MySQL sleep连接过多 解决办法

如下图所示: 在Navicat Premium中可以看到很多处于sleep状态的连接,那怎么让mysql自动关闭这些处理sleep状态的连接呢?wait_timeout默认值: interactive_timeout默认值: sql命令:SHOW GLOBAL VARIABLES L...

2016-12-07 22:53:58

阅读数 3779

评论数 1

MySQL 的CASE WHEN 语句使用说明

case when语句,用于计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 一、简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。语法 简单 CASE 函数:CASE input_expression WHEN when_expression ...

2016-12-07 22:46:22

阅读数 6427

评论数 0

提示
确定要删除当前文章?
取消 删除