-
mysql(6)transaction 事务
事务(Transaction)
是数据库区别于文件系统的重要特性之一。
在文件系统中, 如果正在写文件,但是操作系统突然崩溃了,这个文件就很有可能被破坏。
当然,有一些机制可以把文件恢复到某个时间点。不过,如果需要保证两个文件同步,这些文件系统可能就显得无能为力了。
例如,在需要更新两个文件时,更新完一个文件后,在更新完第二个文件之前系统重启了,就会有两个不同步的文件。
这正是数据...
2020-10-17 08:15:55 |
Database
-
mysql(6)lock mysql 锁
锁
开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一致的方式读取和修改数据。
为此就有了锁(locking ) 的机制, 同时这也是数据库系统区别于文件系统的一个关键特性。
InnoDB 存储引擎较之MySQL数据库的其他存储引擎在这方面技高一筹, 其实现方式非常类似于Oracle数据库
。而只有正确了解这些锁...
2020-10-17 08:15:55 |
Database
-
mysql(6)Index 索引
索引
索引是应用程序设计和开发的一个重要方面。
若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响。
要找到一个合适的平衡点,这对应用程序的性能至关重要。
一些开发人员总是在事后才想起添加索引——我一直认为,这源于一种错误的开发模式。
如果知道数据的使用,从一开始就应该在需要处添加索引。
开发人员往往对于数据库的使用停留在应用的层面, 比如编写SQL语句...
2020-10-17 08:15:55 |
Database
-
mysql-06-mysql index 索引失效 效果不好的情况
索引失效
在工作中,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。
但是索引并不是万能的。建立了索引,并不意味着任何查询语句都能走索引扫描。
稍不注意,可能你写的查询语句是会导致索引失效,从而走了全表扫描,虽然查询的结果没问题,但是查询的性能大大降低。
今天就来跟大家盘一盘,常见的 6 种会发生索引失效的场景。
不仅会用实验案例给大家说明,也会清楚每个索引失效的原因。
...
2020-10-17 08:15:55 |
Database
-
mysql(6)Index 索引常见问题
什么是索引?
当你想查阅书中某个知识的内容,你会选择一页一页的找呢?
还是在书的目录去找呢?
傻瓜都知道时间是宝贵的,当然是选择在书的目录去找,找到后再翻到对应的页。
书中的目录,就是充当索引的角色,方便我们快速查找书中的内容,所以索引是以空间换时间的设计思想。
那换到数据库中,索引的定义就是帮助存储引擎快速获取数据的一种数据结构,形象的说就是索引是数据的目录。
所谓的存储引擎,...
2020-10-17 08:15:55 |
Database
-
mysql(6)Index 从数据页的角度看 B+ 树
从数据页的角度看 B+ 树
大家背八股文的时候,都知道 MySQL 里 InnoDB 存储引擎是采用 B+ 树来组织数据的。
这点没错,但是大家知道 B+ 树里的节点里存放的是什么呢?查询数据的过程又是怎样的?
这次,我们从数据页的角度看 B+ 树,看看每个节点长啥样。
InnoDB 是如何存储数据的?
MySQL 支持多种存储引擎,不同的存储引擎,存储数据的方式也是不同的,我...
2020-10-17 08:15:55 |
Database
-
mysql(5)表
4.1索引组织表
在InnoDB存储引擎中, 表都是根据主键顺序组织存放的, 这种存储方式的表称为索引组织表(index organized table) 。
在InnoDB存储引擎表中, 每张表都有个主键(PrimaryKey) , 如果在创建表时没有显式地定义主键, 则InnoDB存储引擎会按如下方式选择或创建主键:
(1)首先判断表中是否有非空的唯一索引(Unique NOT N...
2020-10-17 08:15:55 |
Database
-
mysql(4)文件系统
二进制日志
二进制日志( binary log) 记录了对MySQL数据库执行更改的所有操作, 但是不包括SELECT和SHOW这类操作, 因为这类操作对数据本身并没有修改。
然而, 若操作本身并没有导致数据库发生变化,那么该操作可能也会写入二进制日志。
例子
例如:
mysql> insert into user (user_id, user_name, remark) v...
2020-10-17 08:15:55 |
Database