数据库
刘二郎
很懒
展开
-
postgres -- 一个问题引发的事务探究(一)
最近刚把婚假休完,博客一直没有更新,,刚休假回来就碰到了个线上问题,郁闷之极,不能怪别人了,只能怪自己代码写的不够好,经不起测试啊。。。。。背景是这样的,微信支付接口调用时会出现connection time out,但是支付宝访问是正常的,因此差不多排除了代码的问题,而且之前已经上线过微信支付,所以基本确定是微信那边的问题造成的,但是无奈人家牛逼啊,这种问题反映过去,想都没想,肯定石沉大海,原创 2017-09-01 16:38:48 · 1153 阅读 · 0 评论 -
Mysql-InnoDB存储引擎中-join原理
本文翻译自mysql性能调优及架构设计 优化部分。主要是做个记录和增加学习的广度。实现算法:Nested Loop Join。本质上和我们平时使用时的直观感受一致,选定一张驱动表作为循环基础数据,然后循环该结果集中的数据作为过滤条件到下一张表内查询数据,然后合并结果。如果有多个join,则将前面的结果集作为循环条件,到后一个表中查询数据。书中的例子:select m.subject msg_sub...翻译 2018-05-29 20:24:30 · 976 阅读 · 0 评论 -
Mysql-InnoDB存储引擎中-死锁
今天我们来看死锁,死锁的一般场景大家都能想到,只要你不是很菜,A获取资源Z之后再获取资源X,B获取资源X之后再获取资源Z,这样就造成了死锁。解释:死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。解决办法:1.超时。InnoDB中设置了超时时间,参数为innodb_lock_wait_timeout。2.wait-for graph(等待图)由于超时机制虽然简单,但...原创 2018-05-29 14:00:03 · 727 阅读 · 0 评论 -
Mysql-InnoDB存储引擎中-锁的算法实现和分析
针对数据库事务的学习来到了锁的算法实现模块了,整理下我们之前学习到的知识:1. 数据库隔离机制(postgresql),将就着用隔离机制2. 数据库特性及保证机制(mysql-InnoDB)四大特性ACID3. 数据库索引结构索引结构 B+树结构 B树结构 索引分类4. InnoDB锁介绍锁介绍以上是一些前期知识准备,了解多方面对于锁的算法理解会很方便。因为我学习的是Mysql-InnoDB详解...转载 2018-05-28 17:23:35 · 1735 阅读 · 1 评论 -
Mysql-InnoDB存储引擎中-特性ACID
说起数据库事务,绕不开的就是两点,一个是事务的特性,另一个就是事务的隔离机制。至于事务的隔离机制,之前已经分析过很多,传送门1,传送门2今天我们来说一说数据库特性,有人会说了,数据库特性有什么啊,不就是ACID嘛,A-原子性,C-一致性,I-隔离性,D-持久性。那好,我问你那数据库是基于什么玩意儿去保证它的呢,比如怎么保证它的原子性,或者怎么保证它的持久性呢~~~~没想过的是不是懵逼了,别急,今天...翻译 2018-05-24 16:35:45 · 1932 阅读 · 1 评论 -
Mysql-InnoDB存储引擎中-锁介绍
最近数据库的学习都是基于InnoDB存储引擎的,这一篇去学习第6章锁的部分。之前有一篇是关于数据库ACID是基于什么保证的,ACD都分析过了,今天关于I-隔离性数据库中是基于锁来保证的。1. lock 和latchlatch主要保证并发线程操作临界资源的正确性,没有死锁检测的机制。lock主要针对事务,锁定包括表,页,行,在commit或者rollback后释放。存在死锁机制。2. 锁的类型2.1...原创 2018-05-28 11:15:28 · 2852 阅读 · 3 评论 -
数据库索引一二事(四)--Mysql索引知识
Mysql常用的索引:一、聚集索引(聚簇索引):一般是主键,注意一般是主键,有可能不是主键,主要数据行的物理地址和与列值的逻辑顺序一致,一个表中一般只有一个聚集索引。二、非聚集(聚簇)索引(又叫辅助索引-->聚集索引以外的任何表中的索引都可以称为辅助索引)2.1.普通索引:index(加速查找)2.2 唯一索引 UNIQUE KEY (不能重复)2.3 联合索引(复合索引、覆盖索引(特殊简称...原创 2018-05-08 17:12:31 · 411 阅读 · 0 评论 -
数据库索引一二事(三)--索引的底层结构
根据前两篇的铺垫,今天我们可以去具体看看索引的知识了。索引的知识以mysql为基本,虽然本人项目使用的PGSql....B,B+树的性能考量:我们知道数据库的文件都是存储在磁盘中,那么IO操作就是评价一个索引结构好坏的最好标准。如果这个索引是顺序结构,那么查询一个数据的时间复杂度就是O(N),数据少还行,到百万,千万级别的时候,查询一次也要O(N),就意味着N次IO,要命。而B树则不然,根据第一章...原创 2018-05-05 15:10:42 · 6238 阅读 · 0 评论 -
数据库索引一二事(二)--B+树结构
B+树和B树基本差不多,但是存在一些差异。B+树的总结:1.根结点只有1个,分支数量范围[2,m]。2.除根以外的非叶子结点,每个结点包含分支数范围[Ceil[m/2],m],m=3的话就是[2,3]。3.所有非叶子节点的关键字数目等于它的分支数量。(这一点在学习B+树时是有争议的,具体参见下面两个两个链接) 3.1 维基百科 3.2 个人博客4.所有叶子节点都在同一层,且关键字数目范...原创 2018-05-04 11:04:05 · 643 阅读 · 0 评论 -
数据库索引一二事(一)--B树结构
数据库的索引的底层实现就是B+树,要学习它,需要先学习B树是个什么鬼东西。首先声明,对于B树的理解我也只是尽我所能的去解释和去学习,有些地方的说法估计不专业或者不准确,大家凑合着看。关于前面的长篇大论我不想再这边定义,因为东西太多,包括B树里面也有很多知识点,我只挑现阶段我想知道的,因为想为后续索引的实践做基础。B树的定义:B 树又叫平衡多路查找树。一棵m阶的B 树(意味着某一个节点最多有m个字树...原创 2018-05-03 16:01:00 · 3512 阅读 · 7 评论 -
postgres -- 一个问题引发的事务探究(二)
这一篇来了解下 数据库 的隔离机制说道隔离机制,就要先说下数据库事务的4大特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数原创 2017-09-04 18:28:50 · 4818 阅读 · 0 评论 -
SQL优化(一) ---- in和exist
1.背景:基础表:原始场景不贴了,贴出一个相似场景,有3张表,学生表(t_student) --> 100000条数据,总共有10万个学生课程表(t_course) --> 30条数据,总共有30种课程得分表(t_score) --> 300万数据,每个学生的每一门课程的得分需求:查询出语文得分是87分的学生Id。最早版本的sql:selec...原创 2019-04-29 16:05:20 · 2489 阅读 · 1 评论