Mysql基础知识要点

SQL 语法----------------------
group by 就是去重的操作
order by 就是排序
count 是统计操作
having 和 group by 连用 对于分组之后的判断条件 和 where 相似
where 查询条件 between , in ,like,is null 这四个作为where复合条件

数据库基础知识----------------

1.读写锁 : 共享锁 (读锁)排它锁 (写锁)
2.颗粒度: 就是锁的范围 范围越小 效率约高 例:表锁 行级锁
3.事务 — 一系列工作的单元 不可以分割
基本要素 (ACID)
原子性 (Atomicity) 事务要么成功要么失败 执行过程中如有其中一个工作失败 就会回滚
一致性 (Consistency) 事务的开始到结束 数据完整性没有遭到破坏 例如 A给B转账 100 A-100 B+100
隔离性 (Isolation) 同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。 跟行锁有关
持久性 (Durability)事务完成后将数据从内存中保存到数据库中 不可以回滚
-3 高并发事务产生的问题
脏读: 事务A读取到了事务B新增的数据,事务B对数据进行了回滚 ,此时事务A读到是脏数据 事务A读到的是事务B内存中的数据 (提交读可以解决脏读)
幻读:同一事务中,用同样的操作读取两次,得到的记录数不相同。 (串行读可以解决,但是效率低,可以利用版本方式解决)
不可重复读: 在同一事务中,两次读取同一数据,得到内容不同。
丢失更新: 事务T1读取了数据,并执行了一些操作,然后更新数据。事务T2也做相同的事,则T1和T2更新数据时可能会覆盖对方的更新,从而引起错误。
4.隔离级别
未提交读? 事务可以读取其他事务未提交的数据 。
提交读?一个事务从一开始到提交之前 其他事务是看不见的 。
可重复读? 解决不可重复多 根据mvcc 版本 来解决问题
可串行读? 按顺序执行事务
5.死锁 两个事务相互等待对方释放锁资源
6.事务型的存储引擎 InnoDB 和 DNB Cluster
7.非事务型事务 MyISAM 表
8.MVCC 行级锁一种升级 是某个时间段快照数据实现的 高并发情况下 保证每个事务看到的是一样的数据
9.innoDB mvcc 是在每行后面增加两个隐藏列 一个创建时间 一个过期时间 (服务的版本号)
SELECT innoDB 只查找当前事务版本的数据 (事务版本大于行数据版本)
INSERT innoDB 插入数据记录当前系统版本号
DELETE innoDB 删除数据记录最新版本号作为标识
UPDATE innoDB 先删后创建
这样不会任何锁 也可以保住数据统一
10. .frm 文件 每个新建的表 都会同时创建一个相同名字的frm 文件 记载表的相关信息
11. innoDB 数据存储在 表空间中 (需要详细看)
12. MyISAM 全文索引 等特性 但是 不支持 事务和行级锁 MyIsAm 表 存在数据文件和索引文件里
MyISAM 是对表加锁 而不是对行加锁 读取的时候用共享锁 写入的时候用排它锁
MyISAM 压缩表 如果一个对数据只读不修改 就可以对表 进行压缩
MyISAM 引擎更适合对插入速度要求很好的系统
13.优化的数据类型
小的数据类型: 尽量选择保证数据存储最小的数据类型
简单就好 : 整形比字符类型效率高
尽量避免null : 避免表里有null 的空列
14.日期类型 timestamp 和 datetime 同时可以表示时间类型 但是 timestamp 仅仅用了 datetime 一半的存储空间
15.字符类型 char 和 varchar 如果是固定长度就使用char(对字符串尾部空格自动删除) 存储引擎不会每次都计算长度 如果 是不固定的 使用varchar
16.索引 用于快速查找数据的数据结构
B-tree 每个节点的数据可是为【key,data】 key 为表中的主键值 data 为非主键之外的值 当data数据比较大 数据块 就会存储很少key 导致深度增加
数据是有序的 所以支持order by 和 group by

  B+tree    按顺序存储KEY   也会按顺序存储data      简单的说    key  和 data  在不同的数据块  

17.哈希索引 根据查询条件进行哈希计算 还有其他索引 不是主流
18.索引的优点 索引可以让服务器迅速定位到表的位置 索引只支持精准查询
减少服务器扫描的数据量
帮助服务器排序和创建临时表
将随机I/O变成顺序I/O
19.聚簇索引 不是索引类别 只是数据存储类型 一个表只能有一个聚簇索引
B+tree data 存储的是行的数据 而不是 主键 (区别)
20.查询的优化
查询结果不需多余的列的时候 不要用 *
尽量必须多次查询相同的数据
21.回滚 通过日志进行回滚
redo log 该日志记录 每一次的SQL 语句
undo log 该日志记录 每一次的事务的磁盘数据
22.explan 是查询sql优化的必备
expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值