一、mysql为什么需要王从同步?
1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
2、做数据的热备
3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
二、mysql执行计划之一——type
type显示的是访问类型,访问类型表示我是以何种方式去访问我们的数据,最容易想的是全表扫描,直接暴力的遍历一张表去寻找需要的数据,效率非常低下,访问的类型有很多,效率从最好到最坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery >range > index > ALL
--system:表只有一行记录(等于系统表),这是const类型的特例,平时不会出现 |
--const:这个表至多有一个匹配行 |
--eq_ref :使用唯一性索引进行数据查找 |
--ref:使用了非唯一性索引进行数据的查找 |
--ref_or_null:对于某个字段即需要关联条件,也需要nu11值的情况下,查询优化器会选择这种访问方式 |
--index_merge:在查询过程中需要多个索引组合使用,没有模拟出来 |
--unique_subquery :该连接类型类似与index_subquery,使用的是唯一索引 |
--index_subquery:利用索引来关联子查询,不再扫描全表 |
--range:表示利用索引查询的时候限制了范围,在指定范围内进行查询,这样避免了index的全索引扫描,适用的操作符:=,>,>,>=,<,<=,IS NULL,BETWEEN,LIKE,or IN() |
--index:全索引扫描这个比all的效率要好,主要有两种情况,一种是当前的查询时覆盖索引,即我们需要的数据在索引中就可以索取,或者是使用了索引进行排序,这样就避免数据的重排序 |
--ALL:全表扫描,一般情况下出现这样的sq1语句而且数据量比较大的话那么就需要进行优化。 |
三、简述mysql中索引类型有哪些,以及对数据库的性能的影响?
1、普通索引:允许被索引的数据列包含重复的值
2、唯一索引:可以保证数据记录的唯一性
3、主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字primary key来创建
4、联合索引:索引可以覆盖多个数据列
5、全文索引:通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术
索引可以极大地提高数据的查询速度
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
但是会降低插入、删除、更新表的速度,因为在执行这些写操作的时候,还要操作索引文件
索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要遍历聚簇索引,那么需要的空间就会更大,如果非聚簇索引很多,一旦聚簇索引改变,那么所有非聚 簇索引都会跟着变
四、什么是mysql的主从复制?
MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。