前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于数据库的一些学习笔记

关于数据库的一些学习笔记

作者头像
哒呵呵
发布2018-08-06 15:25:36
3540
发布2018-08-06 15:25:36
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

一、锁、并发 一个很有趣的事实:容易理解的模型性能都不好,性能好的模型都不容易理解。(性能好,这就意味着锁的颗粒度很少,这样就需要更多的细节) 事务单元: 一个简单的例子: bob给smith100元 顺序是: 锁定bob账户,锁定smith账户,查看bob账户是否有100元,bob账户减100元,smith账户增加100元,分别解锁。 这个时候很重要的是事务的一致性,客户端的查看,都要是一致的,四个原则ACID。 事务之间的抽象: 读写,写读,读读,写写 方式: 序列化读写: 优势:不需要冲突控制 劣势:慢速设备 排他锁事务单元之间没有冲突,就应该并行,只有两个事务单元共享数据时,只能排队。 读写锁: 写和读分开,读之间是并行 排队法: 针对同一个单元的访问控制 MVCC: 写时复制的方式,对写进行优化,能够做到写不阻塞读 二、事务的常见问题 读写之间的先后顺序: 逻辑时间戳 SCN(oracle) Trx_id(Innodb) 还有物理时间戳,实际上就是时钟的概念 故障恢复: 业务属性不匹配:记录下所有操作的反操作。 系统崩溃:checkpoint 死锁产生的原因: 两个线程,同时获得了不同的锁,但是这两个锁具有逻辑关系。方案:降低隔离性,碰撞检测(会把所有的锁记录下来,两个集合的并集,中止其中一边),等锁超时(解锁) 不同方向 相同资源 三、单机事务 ACID。 原子性:一个事务要么同时成功,要么同时失败。要回滚到事务的初始状态,不存在中间态。只记录了undo日志回滚。 一致性:can(happen before)保证能够看到系统内的所有更改 隔离性:以性能为理由,对一致性的破坏。快照读的情况下能保证在读到一致性的同时实现读未提交。 持久性:事务完成后,该事务对数据库所作的更改便持久的保存在数据库之中。持久性和延迟二选一。 四、分布式事务 目标: 提供与单机事务一样的操作 可按需无限扩展 问题:基于锁的事务遇到的问题 --2PL到2PC --异常处理 --日志记录 --延迟问题 MVCC碰到的问题 --顺序 数据共享,时序,延迟,超时是否成功,光速不是无限的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档