mysql

帮助的使用:
按层次查找:? contents; ? data types; ? int;
按key快速查找:? show; ? create table;
==============================================================================================================================================
数据的存储格式:堆组织表:在一个堆里最佳适配的位置随机存放数据。
聚簇索引表:以索引的方式存放数据,key一般为主键索引,如果没有,使用内置的rowid, value为一条记录。
==============================================================================================================================================
存储引擎:用来管理数据的存储格式,具体实现有MyISAM(堆组织表), InnoDB(聚簇索引表)
查看存储引擎:show variables like '%storage%';
==============================================================================================================================================
索引由key和指针组成。
索引: 从数据结构角度 分为B树索引,全文索引,R-tree索引,位图索引和散列索引。
只有Memory存储引擎显示支持hash( 散列 )索引
B树分为b-tree和b+tree,数据库一般使用b+tree的数据结构。
索引: 从物理存储角度 分为聚簇索引和非聚簇索引
聚簇索引:key一般为主键,叶子结点为record。索引与数据在一起
非聚簇索引:叶子结点为指针。索引与数据分开放。
索引: 从逻辑角度 分为主键索引(不能为空的唯一索引),唯一索引,单列索引,复合索引,空间索引,
索引是在存储引擎中实现的,而不是在服务器层中实现的
==============================================================================================================================================
MVCC(Multi-Version Concurrent Control) 多版本的并发控制协议: InnoDB的并发控制处理是基于MVCC标准的一个稍微有点不一样的实现。
MVCC机制是与锁机制并列的用于控制并发,但mvcc的实现中可能会依赖锁机制。
目标:读不加锁,读写不冲突。
读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)
快照读:简单的select操作,属于快照读,不加锁
MVCC的机理:给每条record上隐性加上两个field(创建记录的事务id和删除记录的事务id),insert时会在“创建记录的事务id”上设置值,delete时会在“删除记录的事务id”上设置值,update会先copy再update copy record最后delete old record所以update两个隐性field都会设置值。select不会修改这两个field.
具体细节参考: https://blog.csdn.net/whoamiyang/article/details/51901888 轻松理解MYSQL MVCC 实现机制
==============================================================================================================================================
事务:一组不可分割的sql语句块
事务特性:ACID,原子性,一致性,隔离性,持久性
一致性:指的是数据处于一种有意义的状态
事务语法:
SET  AUTOCOMMIT  ON; 每条sql就是一个事务
SET  AUTOCOMMIT OFF/ BEGIN/START TRANSACTION;
sql块;
commit/rollback;

事务的底层实现:
通过undo log和redo log保证原子性和持久性
通过锁机制来保证并发数据的一致性
隔离性:通过锁机制和MVCC机制来保证在不同隔离级别上的正确性。
==============================================================================================================================================
数据库锁:
共享(S)锁:多个事务可以对同一个数据对象加S锁,它们只能读不能修改。
排它(X)锁:仅有一个事务可以对同一个数据对象加X锁,其它事物不能读和修改。

程序员可见的锁:
乐观锁:通过时间戳或者版本号来实现,更新时查看数据库的版本号与程序中的版本号是否一致
悲观锁:通常是使用数据库的排它锁。select * from t1 for update;

==============================================================================================================================================
事务的并发:为了保证数据的完整性和一致性,引入了事务的隔离级别。为了在正确性和并发之间做权衡,有不同的隔离级别。

事务隔离级别:
未提交读:插入一条记录,但未提交,被另一个并发的事务读取到。这种级别基本没有做并发控制。
已提交读和可重复读是通过mvcc机制保证。 innodb引擎下不存在幻读
可串行化是通过锁机制保证。
幻读:T1更新所有记录,T2插入一新记录,T1获取全部数据,结果存在未更新的记录。 幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行
不可重复读与幻读的区别:不可重复读是因为update造成的, 而幻读是因为insert或delete造成的。
SELECT @@global.tx_isolation;
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;
==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================

==============================================================================================================================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值