
database
文章平均质量分 76
ptgood
这个作者很懒,什么都没留下…
展开
-
mysql的buffer和log
前言 现在写的还很乱,等以后再整理下,学习自用 log部分 log分为redo log, bin log, undo log三部分 redo log 数据库持久性需要把修改的内容写进磁盘中,如果这些内容在磁盘中是散布在各个位置,寻道时间则会很长,于是采用一个redo log,把这些内容先写入redo log的范围中,这样可以说就把随机写变为一个顺序写,(TODO后面会把这些redo log删掉再写入数据库吗) bin log 不太清楚(binlog是什么,干什么用的,好像和主从复制有关,为什么原创 2020-07-28 10:40:41 · 569 阅读 · 1 评论 -
MyISAM和InnoDB的区别
前言 学习自用,有错麻烦提一下 正文 InnoDB是MySQL在...版本开始的默认引擎, 较大的区别是InnoDB支持事务,而MyISAM不支持事务(是没有事务的概念?这就是他只有表锁的原因?), InnoDB支持意向锁,行锁,间隙锁等,而MyISAM只支持表锁 对于 他们的索引,InnoDB使用的是聚簇索引,意思是它的索引数据的物理顺序和索引列值顺序是一样的,同时聚簇索引的整列数据是放在B树叶子节点的,相比起来MyISAM的只在B树叶子节点存放数据列的指针,所以他们InnoDB的索引和数据列原创 2020-07-27 23:44:11 · 127 阅读 · 0 评论 -
SQL语句是怎么执行的
参考资料 https://www.cnblogs.com/wupeixuan/p/11626024.html原创 2020-07-24 10:00:39 · 556 阅读 · 0 评论 -
Mysql的索引
索引 索引的数据结构大多是B+树的,不是键值对结构,在非叶子节点存索引列的值,而在叶子节点存要找的数据, B树是key-value结构,可以在树中直接找到对应的值,这样更适合随机读取 而B+树是B树的改进,不使用key-value结构,而是非叶子节点只存索引列,而叶子节点顺序存储数据,并把叶子节点用指针串联起来,这样非叶子节点能存的索引值更多,且因为是顺序的更适合顺序读取,比如范围查询,可以看出它相比B树在随机读取方面可能会差点,因为B+树只有到叶子节点才能命中数据,而nosql的mongoDB就是用原创 2020-07-23 17:03:36 · 186 阅读 · 0 评论 -
SQL语句查询优化
SQL优化(xmind里有,不熟练) 如何写语句 使用慢查询(怎么开启),对慢语句执行explain 尽量不要用not in这样的排除语句 索引列不要放在函数或者表达式中 尽量不要用NULL来筛选 索引设计: 索引字段,不要加到修改多的字段上,尽量不要加到重复过多的上面 对于group by,order by和where字段后面的条件可以考虑加索引 对于多列索引,建立联合索引,这样(a,b,c)相当于(a),(a,b)等,,其中顺序要遵循最左匹配原则 join on用到会更高效(?) 尽原创 2020-07-22 18:12:06 · 212 阅读 · 0 评论 -
database_数据库设计
前言 本文是在学习中同时记录,TODO:总结 步骤 预备知识: 冲突 规范化理论 两个部分:局部ER设计和全局ER设计 即:抽象和合并 抽象为实体和属性,生成局部ER图 合并局部ER图,消除冲突,生成全局ER图 两步注意的是: 抽象:注意分类和聚合 合并要解决冲突 优化冗余:如下图 初步ER图消除冗余分析规范化理论基本ER图 ER图转表 实体转成表规则: 一个实体一个表...原创 2019-10-23 15:00:30 · 227 阅读 · 0 评论 -
数据库事务和范式理解
前言 学习自用..网上大把资料,主要为了贴上自己理解.老实说标题和内容真难对的上..以后再修改下 事务的ACID 事务的atomicity, 事务的每项操作不会存在中间状态,做了就成功,失败了就相当于没做,(为什么要有这个概念的,为了防止并发让事务存在中间态吗,有什么数据库的原子性的反例吗) consistency一致性 数据库的状态要是一致的,(Q:这里说的状态一致是什么呢),A:数据库的状态的一致指的是完整性约束,完整性约束说的是数据库不能有不规范的数据,(TODO,这里的完整性约束),很多原创 2020-07-06 13:12:50 · 1237 阅读 · 0 评论 -
InnoDB的隔离级别实现
并发问题, 丢失修改,不可重复读,幻读,脏读 不可重复读 有个事务T,T读了两次数据,在两次中间有人update/delete了数据,导致T两次读的结果不一致 幻读 (在高性能mysql里把这个归为不可重复读)同上读了两次,中间有人insert了一条数据,导致两次结果不一致 脏读 即读到其他事务未提交的数据 丢失修改 两个事务先后读改再提交,导致最终结果错误(?) 事务隔离级别有四种,RU,RC,RR和SI 三段锁协议 一段锁:在改前加X锁,T完释放,可解决丢失修改(不可以啊?) 二原创 2020-07-05 15:17:34 · 290 阅读 · 0 评论