Loading

MySQL问题

MYSQL

1、主从复制

image

总览:

mysql主从复制是一个异步的复制过程:

1、主库会创建一个binlog输出线程,实时的将mysql的操作写入本地的binlog二进制文件中

2、从库开始复制时

​ 创建从库I/O线程,将主库传来的binlog文件,保存到本地的relay log文件中。

​ 创建SQL线程,从ready log文件中的操作取出来进行执行,完成复制。

流程:

  • 步骤一:主库db的更新事件(update、insert、delete)被写到binlog
  • 步骤二:从库发起连接,连接到主库
  • 步骤三:此时主库创建一个binlog dump thread,把binlog的内容发送到从库
  • 步骤四:从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
  • 步骤五:还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db

2、数据结构

  • 聚簇索引-InnoDB(常用)

  • 非聚簇索引-MyISAM(不常用)

    区别:

    1、InnoDB支持事务,MyISAM不支持事务

    2、InnoDB支持外键,MyISAM不支持外键

    3、两者使用的都是B+树作为索引结构,其中:

    ​ InnoDB的叶子节点存放了索引和数据

    ​ MyISAM叶子节点只存放了指向数据的索引值

InnoDB:

主索引:按主键来进行聚集,表必须要有主键,若无主键,mysql会自动选择一个唯一标识的数据记录列作为主键,若不存在该列,会生成一个隐含字段作为主键,长度为6,类型为长整型。最终叶子节点存放该条数据的全部数据。

辅助索引:都是主索引的data域中的各个数据列来作为辅助索引,最终叶子节点存放主索引的索引值。

image

image

MYISAM:

主索引:将主键为索引,最终叶子节点存放指向数据磁盘地址的指针。

辅助索引:是其他列作为索引,最终叶子节点也是存放指向数据磁盘地址的指针。

image

image

posted @ 2022-05-13 10:40  mainwoodの慢屋  阅读(25)  评论(0编辑  收藏  举报