mysql 技术内幕
2022-02-28 17:00:26   19  举报             
     
         
 AI智能生成
  mysql技术内幕存储引擎书本思维导图
    作者其他创作
 大纲/内容
  锁    
     InnoDB存储引擎中的锁  
     一致性非锁定读(MVCC)  
     一致性锁定读  
     自增长与锁  
     外键和锁  
     事务    
     认识事物    
     概述  
     分类  
     事务的实现    
     redo  
     undo    
     基本概念  
     undo存储管理  
     undo log格式    
     insert into log  
     update undo log  
     查看undo格式  
     purge  
     group commit  
     备份与恢复    
     概述    
     按类型  
     按备份后的文件内容  
     按备份数据库内容  
     冷备  
     逻辑备份    
     mysqldump  
     select ... into outfile  
     逻辑备份的恢复  
     load data infile  
     mysqlimport  
     二进制日志备份与恢复  
     热备    
     ibbackup  
     XtrBackup  
     快照备份  
     主从复制    
     主从复制概述    
     如何提升数据库并发能力    
     优化sql和索引  
     redis缓存热点数据  
     mysql读写分离  
     主从复制的作用    
     读写分离  
     数据备份  
     高可用性
  
     主从复制原理    
     三个线程    
     二进制日志转储线程  
     从库 I/O 线程  
     从库 SQL 线程  
     原理图  
     监控  
     一主一从架构搭建    
     docker容器搭建  
     非docker容器搭建  
     同步数据一致性问题    
     主从同步的要求    
     读库和写库的数据一致(最终一致)  
     写数据必须写到写库  
     读数据必须到读库(不一定)  
     理解主从延迟问题  
     主从延迟问题原因    
     从库的机器性能比主库要差  
     从库的压力大  
     大事务的执行  
     如何减少主从延迟    
     降低多线程大事务并发的概率,优化业务逻辑  
     优化SQL,避免慢SQL, 减少批量操作 ,建议写脚本以update-sleep这样的形式完成  
     提高从库机器配置,减少主库写binlog和从库读binlog的效率差  
     尽量采用短的链路,也就是主库和从库服务器的距离尽量要短,提升端口带宽,减少binlog传输的网络延迟  
     实时性要求的业务读强制走主库,从库只做灾备,备份。  
     如何解决一致性问题    
     异步复制    
     子主题  
     半同步复制    
     子主题  
     组复制  
     mysql配置文件详解  
     mysql体系结构和存储引擎    
     定义数据库和实例    
     数据库    
     查看数据库所在路径  
     实例    
     查看mysql数据库实例  
     查看实例启动时,加载的配置文件位置  
     mysql体系结构    
     子主题  
     Mysql存储引擎    
     InnoDB    
     5.5.8版本为默认存储引擎  
     4.1版本开始具有ibd文件  
     next-key locking 临键锁  
     采用聚集的方式,每张表的顺序按照主键存放  
     MyISAM    
     不支持事务、表锁设计、支持全文索引  
     数据缓冲池只缓存索引文件  
     由MYD和MYI组成  
     默认支持4GB大小的表  
     NDB    
     集群存储引擎  
     Memory    
     数据存放在内存中  
     使用hash索引  
     只支持表锁  
     适用于存放临时数据的临时表  
     Archive    
     只支持INSERT和SECLECT  
     使用zlib算法压缩行存储  
     适用于存储归档数据,如日志信息  
     Federated  
     Maria  
     InnoDB存储引擎    
     体系架构    
     架构图  
     后台线程    
     Master Thread    
     作用    
     脏页的刷新  
     数据异步刷新到磁盘  
     合并插入缓冲池  
     undo页的回收  
     工作方式  
     IO Thread    
     insert buffer thread  
     log thread  
     innodb_read_thread   4线程  
     innodb_write_thread   4线程  
     Purge Thread  
     Page Cleaner Thread  
     内存    
     内存数据对象  
     缓冲池    
     页    
     索引页  
     数据页  
     undo页  
     插入缓冲(insert buffer)
  
     自适应哈希字典(adaptive hash index)  
     innodb存储的锁信息(lock info)  
     数据字典信息(data dictionary)  
     LRU List、Free List、Flush List    
     LRU List    
     子主题  
     Free List    
     子主题  
     Flush List    
     子主题  
     重做日志缓冲 redo log buffer  
     额外的内存池  
     Check point技术    
     write ahead log策略  
     怎么达到高效性和持久性?    
     阶段1  
     阶段2    
     重做日志(rodo log)的设计  
     LSN(Log Sequence Number)  
     工作原理    
     Sharp Checkpoint    
     每次刷新多少页  
     每次从哪里取脏页  
     什么时间触发Checkpoint  
     Fuzzy Checkpoint    
     每次刷新多少页  
     每次从哪里取脏页  
     什么时间触发Checkpoint    
     Master Thread Checkpoint  
     Flush_LRU_LIST Checkpoint  
     Async/Sync Flush Checkpoint  
     Dirty Page too much Checkpoint  
     Master Thraed工作方式    
     1.0.X版本之前    
     主循环(loop)    
     每秒的操作    
     日志缓冲刷新到磁盘,即使这个事务还没有提交(总是)  
     合并插入缓冲(可能)  
     至多刷新100个InnoDb缓冲池中的脏页到磁盘(可能)
  
     如果当前没有用户活动,则切换到background loop(可能)
  
     每十秒的操作    
     刷新100个脏页到磁盘(可能的情况下)  
     合并至多5个插入缓冲(总是)  
     将日志缓冲刷新到磁盘(总是)  
     删除无用的Undo页(总是)  
     刷新100个或者10个脏页到磁盘(总是)  
     后台循环(background loop)    
     删除无用的Undo页(总是)  
     合并20个插入缓冲(总是)  
     跳回到主循环(总是)  
     不断刷新100个页直到符合条件(可能,跳转到flush loop)  
     刷新循环(flush loop)  
     暂停循环(suspend loop)  
     1.2.X版本之前    
     通过参数配置磁盘IO的次数  
     调整脏页所占缓冲池的比例  
     新增自适应刷新  
     调整full purge  
     1.2.X版本    
     新增Page Cleaner Thread线程  
     InnoDB关键特性    
     插入缓冲(Insert Buffer)    
     Insert Buffer    
     前提条件  
     缺点  
     Change Buffer    
     前提条件  
     三种buffer    
     Insert Buffer  
     Delete Buffer  
     Purge Buffer  
     查看  
     Insert Buffer的内部实现    
     结构    
     非叶子结点  
     叶子结点  
     Merge Insert Buffer    
     有什么用  
     什么时候发生    
     辅助索引页被读取到缓冲池时  
     Insert Buffer Bitmap页追踪到该辅助索引页已无可用空间时  
     Master Thread  
     两次写(Double Write)    
     实现过程  
     观察double write运行情况  
     禁用  
     自适应哈希索引(Adaptive Hash Index)    
     提高索引效率  
     要求  
     参数配置  
     异步IO(Async IO)  
     刷新领接页(Flush Neighbor Page)  
     启动、关闭和恢复    
     影响关闭行为    
     参数值为 0    
     子主题  
     参数值为 1    
     子主题  
     参数值为 2    
     子主题  
     影响恢复    
     参数值 0  
     参数值 1  
     参数值 2  
     参数值 3  
     参数值 4  
     参数值 5  
     参数值 6  
     文件    
     参数文件    
     什么是参数  
     参数类型    
     动态参数    
     session  
     global  
     静态参数  
     日志文件    
     错误日志文件(error log)    
     启动日志  
     查看日志  
     作用  
     二进制日志(bin log)    
     作用    
     恢复  
     复制  
     审计  
     启用    
     永久性方式    
     子主题  
     临时性方式    
     子主题  
     文件  
     查看日志  
     相关参数    
     max_binlog_size  
     binlog_cache_size  
     sync_binlog  
     binlog-do-db  
     binlog-ignore-db  
     log-slave-update  
     binlog-format  
     慢查询日志(slow query log)    
     参数配置  
     查看慢查询日志  
     日志数据格式  
     捕获sql语句的方式    
     逻辑读取  
     物理读取  
     启用慢查询日志的方式  
     查询日志(log)  
     Undo日志    
     概念  
     Undo日志的作用    
     回滚数据  
     MVCC  
     undo log的生命周期  
     undo log的删除    
     针对于insert undo log  
     针对于update undo log  
     套字节文件  
     pid文件  
     表结构定义文件  
     InnoDB引擎文件    
     表空间文件  
     重做日志(rodo log)文件    
     概念  
     工作原理  
     相关参数  
     与二进制文日志的区别  
     日志结构  
     写入方式  
     刷盘策略参数:innodb_flush_log_at_trx_commit    
     设置为0  
     设置为1  
     设置为2  
     表    
     索引组织表    
     概念  
     选择和创建主键  
     InnoDB逻辑存储结构    
     表空间    
     共享表空间  
     独立表空间  
     段    
     数据段  
     索引段  
     回滚段  
     区  
     页    
     数据页(B-tree Node)  
     undo 页(undo Log Page)  
     系统页(Systm Page)  
     事务数据页(Transaction system Page )  
     插入缓冲位图页(Insert Buffer Bitmap)  
     插入缓冲空闲列表页(Insert Buffer Free List)  
     未压缩的二进制大对象页(Uncompressed BLOB Page)  
     压缩的二进制大对象页(compressed BLOB Page)  
     行  
     InnoDB行记录格式    
     COMPACT行格式    
     变长字段长度列表  
     NULL值列表  
     记录头信息(5字节)    
     delete_mask  
     min_rec_mask  
     record_type  
     heap_no  
     n_owned  
     next_record    
     演示:删除操作  
     演示:添加操作  
     记录的真实数据列  
     隐藏列    
     事务ID列  
     回滚指针列  
     Redundant行格式  
     行溢出与Char的行结构存储  
     Dynamic和Compressed行格式  
     InnoDB数据页格式    
     第1部分    
     File Header(文件头部,描述页的信息)  
     File trailer(文件尾部)  
     第2部分    
     Free Space(空闲空间)  
     User Records(用户记录)  
     infimum + Supremum(最小最大记录)  
     第3部分    
     Page Directory(页目录)  
     Page Header(页面头部,页头和页的状态)  
     Name File Formats 机制  
     约束  
     视图  
     分区表    
     分区概述  
     分区类型    
     RANGE分区  
     LIST分区  
     HASH分区  
     KEY分区  
     COLEMNS分区  
     分区和性能  
     索引和算法    
     概述  
     数据结构与算法    
     二分查找法  
     二叉查找树和平衡二叉树  
     B+树    
     插入操作  
     删除操作  
     B+树索引    
     聚集索引  
     辅助索引  
     B+树索引分裂  
     B+树索引管理    
     索引管理  
     Fast Index Creation  
     Online Schema Change  
     Online DDL  
     Cardinality    
     什么是Cardinality  
     InnoDB存储引擎的Cardinality统计  
     B+树索引使用    
     联合索引  
     指定使用某个索引  
     Multi_Range Read优化  
     index condition pushdown(索引下推)  
     覆盖索引  
     哈希算法    
     哈希表  
     InnoDB存储引擎的哈希算法  
     自适应哈希索引  
     全文索引  
     
    收藏 
      
    收藏 
     
 
 
 
 
  0 条评论
 下一页
  
  
  
  
  
  
  
  
  
  
  
 