小滴课堂后端面试题(14)~持续更新中

一、mysql常用的功能索引有哪些分别在什么场景下使用

回答

特点
创建语句
最基本的索引 , 仅加速查询
CREATE INDEX idx_name ON
table_name(fifiled_name)
加速查询,列值唯一,允许为空; 组 合索引则列值的组合必须唯一
CREATE UNIQUE INDEX idx_name ON
table_name(fifiled_name_1,fifiled_name_2)
加速查询,列值唯一, 一个表只有 1 个,不允许有空值
ALTER TABLE table_name ADD PRIMARY KEY ( fifiled_name )
加速查询,多条件组合查询
CREATE INDEX idx_name ON table_name(fifiled_name_1,fifiled_name_2);
索引包含所需要的值,不需要 回表 查 询, 比如查询 两个字段,刚好是组合索引 的两个字段
对内容进行分词搜索,仅可用于 Myisam, 更多用 ElasticSearch 做搜 索
ALTER TABLE table_name ADD FULLTEXT ( fifiled_name )

二、Mysql搭建数据库主从复制,会有同步延迟问题,怎么解决

回答

(一)硬件提升
保证性能第一情况下,不能百分百解决主从同步延迟问题,只能增加缓解措施。 

现象:主从同步,大数据量场景下,会发现写入主库的数据,在从库没找到。 

原因:
1、主从复制是单线程操作,当主库TPS高,产生的超过从库sql线程执行能力 
2、从库执行了大的sql操作,阻塞等待 3、服务器硬件问题,如磁盘,CPU,还有网络延迟等 

解决办法: 
1、业务需要有一定的容忍度,程序和数据库直接增加缓存,降低读压力 
2、业务适合的话,写入主库后,再写缓存,读的时候可以读缓存,没命中再读从库 
3、读写分离,一主多从,分散主库和从库压力 
4、提高硬件配置,比如使用SSD固态硬盘、更好的CPU和网络 
5、进行分库分表,减少单机压力

(二)业务侧解决,比如核心业务强制走主库,结合缓存使用

三、MysqlInnodbMyISAM引擎的区别

回答

区别项
Innodb
myisam
事务
支持
不支持
锁粒度
行锁,适合高并发
表锁,不适合高并发
是否默认
默认
非默认
支持外键
支持外键
不支持
适合场景
读写均衡 , 写大于读场景,需要事务
读多写少场景,不需要事务
全文索引
可以通过插件实现 , 更多使用 ElasticSearch
支持全文索引

重点:MyISAM不支持事务,如果需要事务则改为innodb引擎 更改数据库的表里面的引擎

四、Mysql有多少种常见的日志,分别解释日志的作用

回答

redo 重做日志 
作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,到达事务一致性 

undo 回滚日志 
作用:保证数据的原子性,记录事务发生之前的数据的一个版本,用于回滚。 
innodb事务的可重复读和读取已提交 隔离级别就是通过mvcc+undo实现 

errorlog 错误日志 
作用:Mysql本身启动、停止、运行期间发生的错误信息 

slow query log 慢查询日志 
作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功 

binlog 二进制日志 
作用:用于主从复制,实现主从同步 

relay log 中继日志 
作用:用于数据库主从同步,将主库发送来的binlog先保存在本地,然后从库进行回放 

general log 普通日志 
作用:记录数据库操作明细,默认关闭,开启会降低数据库性能

五、Mysql主从复制数据一致性校验方案怎么做

回答

Mysql主从复制是基于binlog复制,难免出现复制数据不一致的风险,引起用户数据访问前后不一致的风险 所以要定期开展主从复制数据一致性的校验并修复,避免这些问题

解决方案之一,使用Percona公司下的工具 

pt-table-checksum工具进行一致性校验 

原理: 
主库利用表中的索引,将表的数据切割成一个个chunk(块),然后进行计算得到checksum值。 
从库也执相应的操作,并在从库上计算相同数据块的checksum,然后对比主从中各个表的checksum是否一致并存储到数据库,最后通过存储校验结果的表就可以判断出哪些表的数据不一致 

pt-table-sync(在从库执行)工具进行修复不一致数据,可以修复主从结构数据的不一致,也可以修复非主 从结构数据表的数据不一致 

原理:在主库上执行数据的更改,再同步到从库上,不会直接更改成从的数据。在主库上执行更改是基于主 库现在的数据,也不会更改主库上的数据,可以同步某些表或整个库的数据,但它不同步表结构、索引,只同步不一致的数据 

注意:
默认主库要检查的表在从库都存在,并且同主库表有相同的表结构 如果表中没有索引,pt-table-checksum将没法处理,一般要求最基本都要有主键索引 pt-table-sync工具会修改数据,使用前最好备份下数据,防止误操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值