1.事务的特性:原子性 一致性 隔离性 持久性
2.多事务同时执行存在的问题:脏读 不可重复读 幻读
3.事务隔离级别 读未提交 读提交 可重复度 串行化
4.隔离级别的却别
读未提交:一个事务还未提交,他所做的变更就可以被别的事务看到。
读提交:一个事物提交之后,他所做的变更才可以被别的事务看到
可重复度:一个事物执行过程中看到的数据是一致的,未提交的更改对其他事物是不可见的
串行化:对应一个记录会加读写锁,出现冲突时候,后访问的事物必须等待前一个事物执行完才可继续
5.配置方式:启动参数 transaction-isolation
6.事物的隔离界别实现:
每条记录在更新的时候同时会记录一条回滚操作。同一条记录在系统中可以存在多个版本,
这个就是数据库的多版本并发控制mvcc
7.回滚日志什么时候删除,系统会判断但没有事物需要用到这些回滚日志的时候
8.是么时候不需要了,当系统里没有比这个回滚日志更早的read-view时候
9,尽量不要使用长事务:长事务意味着系统里面会存在很老的事物视图,在这个事物提交之前,
回滚记录都需要保存,这个会导致大量的占用存储空间。初次之外,长事务还胀痛所资源,可能
拖垮数据库。
10.事物的启动方式:显示启动事物语句 begin或者start transaction,提交commit,回滚rollback
方式二;set autocommit =0该命令吧这个线程的自动提交关闭。这样只要执行一个select语句,事物就启动,
并不会自动提交,知道主动执行commit或者rollback或者断开连接
索引总结:
1.作用:提升查询效率
2、常见索引模型: 哈希表 有序数组 收索树
3.hash表 key-value 把值放在数组里面,用一个哈希函数把key换算成一个确定的位置,然后吧value放在数组
的这个位置。解决冲突方法 链表
使用场景:只有等值查询的场景
4.有序数组:按照顺讯存储 采用二分查询 时间复杂度江都。
查询效率高 更新效率低 支持范围查询
适应于静态存储引擎
5.二叉搜索树L每个节点的左儿子小于父节点 父节点小于有儿子
查询时间复杂度logn 更新时间复杂度logn
数据库存储不用二叉树,因为数高过高,会用N叉树。
6.innodb财通 b+tree
7.索引类型 :
主键索引:主键索引的一叶子节点存的是整行的数据(聚出局索引),
非主键索引的叶子节点的内容是主键节点的值
‘
主键索引只要收索 id这个b+tree就可以拿到数据。普通索引先收索索引找到主键值
在到主键索引树索引一次(回表)
8.一个数据页满了,按照b+tree的算法,新增加一个数据页,叫做页分裂,导致性能下降。
空间利用率下降约50%。当相邻的两个数据也利用率很低的时候会做数据页合并,和的规程是分裂过程
的逆过程。
9.从性能和存储空间考量,自增主键往往是合理的选择。
自增主键:自增主键递增,顺序插入。
数字比字符串占用空间小
10.如果删除主键索引,在重建主键索引,会同时去修改普通索引对应的主键索引,性能
消耗大。删除重建普通索引影响小些。