mysql概念
Posted 斑驳岁月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql概念相关的知识,希望对你有一定的参考价值。
# ### part1 索引树高度
# 1.表的数据行
数据量越大,树的高度就会变高,理论上3层索引树高度可以支持百万级别数据量
解决:可以使用分表,分库,数据库缓存,解决数据过大问题
# 2.索引键值过长
该索引字段存储数据太大,每个叶子节点默认可以存储16k,超过范围增加叶子节点,
解决:前缀索引 (截取前10个长度)
# 3.数据类型
char(定长,多余数据用空格补位) varchar(变长) 从数据类型角度,char比varchar快
从数据结构这个角度上看,varchar更加合理
选择合理的类型;
# ### part2 事务处理的四项特征 ACID
A.原子性 :
同一个十五中可能有多条sql语句,要么全部成功,要么直接回滚,作为一个完整的整体,不能再分割的最小个体
C.一致性 :
a,i,d 都是为了保证数据的一致性才提出来的,比如约束,键,在插入数据时,必须按照约定条件才能插入,保证插入数据规则上的一致性
上升到事务中,防止意外情况导致数据不统一,比如脏读,幻读,不可重复读,最终要决定数据的同步一致
在上升到主从数据库,主数据库执行这条插入数据,从数据库一定执行,保证数据一致性
I.隔离性 :
lock+isolation锁,来处理事务的隔离界别,
一个事务和另外一个事务在工作过程中彼此独立,
如果同时更改同一个数据,因为锁机制的存在,先执行的先改,其他事务需要等待
D.持久性 :
把数据写到磁盘上,保证数据的持久化存储
# 隔离性: 隔离级别
begin;
执行SQL
commit;
rollback;
脏读: 没提交的数据被读出来了
不可重读: 前后多次读取,数据内容不一样(同一个会话中,在不进行修改的时候,永远只看到同样的一套数据)
幻读 : 前后多次读取,数据总量不一样
RU : 读未提交 : 脏读,不可重读,幻读
RC : 读已提交 : 防止脏读,会出现 不可重读和幻读
RR : 可重复读 : 防止脏读,不可重复读,可能会出幻读 (默认级别)
SR : 可串行化 : 什么都能防止(多个会话窗口同步,不能并发,性能差)
以上是关于mysql概念的主要内容,如果未能解决你的问题,请参考以下文章