Mysql 基础知识2

2020-05-18  本文已影响0人  Minnakey

数据查询流程

    连接池
    缓存
    分析器
    优化器
    执行器

日志文件类型

    /var/lib/mysql
    error,warning log
    Binlog :ddl 提交后记录,主从备份,数据备份,数据恢复
    general log
    slow query log
    redo log:commit log
    undo log:rollback log
    relay log:主从

存储引擎的存储和提取

InnoDB
文件:.frm .idb .ibdata
索引和数据存储在一起,支持高并发、事务
MyIsam
文件:.frm .myd .myl
索引和数据不在一起
memory:内存

索引

mysql 集群

主从同步:主-》binlog+独立ID 从-》唯一ID,专门复制主服务器的数据
前提:1. 主记录binlog位置 2. 已有数据快照mysqldump导出,复制数据文件
从 -》zhuIP+权限+binlog文件名和位置
主从复制:延时-SQL Thread, IO Thread,网络延时,IO耗时
主从读写分离: 主 读写 从 数据安全备份
分表分库:垂直切分-》 按照业务模块切分到不同数据库
水平切分 -》 大表按行切分

    全局锁:database锁
    表级锁:table锁,共享读,独占写。 加锁块,开销小
    行级锁:Record Locks, Gap Locks,  next-key locks
    元数据锁:MDL
    共享锁:读锁
    排它锁:update,delete,insert
    悲观锁:表级锁,元数据锁,意向锁
    乐观锁:程序实现,version+timezone
    死锁:间隙锁死锁,记录锁死锁。
            避免交叉更新,保持事务的轻量,尽量使用主键,避免子查询,尽快提交事务,

性能分析和性能优化

    表优化:使用中间表,大表拆表
    索引优化:where 条件,组合索引(粒度从高到低),使用覆盖索引
    limit 优化:count(*),count(1),count(cloume)
    join 优化:关联字段建索引,字段类型一样
    where 优化:使用 in, not exists, exists

事务与事务分析

DDl,DML,DCL
Dml 数据操纵语言,如select、update、delete,insert
Ddl 数据定义语言,如create table 、drop table 等等
Dcl 数据控制语言, 如 commit、 rollback、grant、 invoke等
A: all/no
C: status 一致
I: 锁+MVCC 用于数据库提供并发控制技术
D: 成功后写入磁盘

事务

Begin/start Transaction
commit;
Rollback

行锁分析

  1. 主键+RC:X锁
  2. 唯一索引+RC:X锁
  3. 唯一非索引+RC:X锁
  4. 无索引+RC: 全表锁
  5. 主键+RR: X锁
  6. 唯一索引+RR:X锁
  7. 唯一非索引+RR: X锁+GAP 两条记录之间的缝隙
  8. 无索引+RR : 全表锁+全表GAP

CheckPoint:

  1. 完全检查点:sharp
  1. 模糊检查点:master thread、flush lru list、async/sync、dirty page too much

磁盘文件

系统表空间:data dictionary, Double write,
用户表空间:数据+索引+undo
redo 日志文件和归档文件

B+ 树 叶子结点存储数据
B 树 主+叶子结点

上一篇下一篇

猜你喜欢

热点阅读