随笔分类 - 数据库
摘要:delete/truncate/drop,其中delete是数据操作语言。后两个是数据定义语言,执行后会自动提交。delete和truncate只删除数据不会删除表的结构,而drop将删除表的结构被依赖的约束、触发器、索引。 where 和having作用的对象不同,一个作用于表和视图,一个作用于组
阅读全文
摘要:一、乐观锁 认为对同一个数据的并发操作,不会造成冲突。在事务要提交更新的时候,才会对数据进行冲突校验。 第一次读的时候,获取到某个字段值,如版本或时间戳。处理完业务逻辑要开始更新的时候,需要再次查看这个字段是不是和第一次一样。如果一样就更新,反之拒绝。 可以使用数据版本记录机制或时间戳实现。 经典应
阅读全文
摘要:MySQL端口号3306,redis6379 为什么redis可以是单线程? 单线程的epoll可能会被卡在数据库查询、写日志这种耗时的操作上。 redis是工作在内存上,纯内存的不需要考虑有没有数据库、日志、磁盘操作、网络操作、外界请求啥的。 redis是内存数据库、KV数据库、数据结构数据库。它
阅读全文
摘要:多用户共享资源,出现并发访问的时候,需要合理控制资源的访问规则。锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,锁可以大致分成全局锁、表级锁、行锁。 (1)全局锁就是对整个数据库实例加锁。 业务的更新不只是增删改数据DML,还有可能是加字段等修改表结构的操作DDL。 全局读锁,使用Flu
阅读全文
摘要:如果SQL查询比较慢,就会要给字段加索引。索引就像书的目录,可以提高查询效率。 索引的优点:加快查找的速度,加快分组和排序字段的速度,加快表和表之间连接的速度。 缺点:耗费空间,而且增删改的时候还要动态维护索引耗费时间。 索引的作用:数据是存在磁盘的,如果没有索引,查找的时候要把所有数据都一个一个放
阅读全文
摘要:事务是访问并更新数据库各种数据项的一个程序执行单元,可以是一条语句,也可以是一组语句。 ACID(原子性、一致性、隔离性、持久性) 原子性:其中的操作要么都做,要么都不做。undolog(rollback)要么都执行要么都不执行。 一致性:满足某个状态,数据就是一致的。不满足某个状态,数据就是不一致
阅读全文
摘要:数据库设计三大范式: (1)确保数据库表字段的原子性,即字符不可再分性。 (2)一个表必须有主键,非主键列必须完全依赖于主键,不能部分依赖。 (3)非主键必须直接依赖于主键,不能间接依赖。 bin log二进制日志,redo log重做日志(持久性),undo log回滚日志(原子性)。二进制日志会
阅读全文