目录
一、数据库类型
二、数据库引擎
三、mysql数据库类型
四、mysql的约束添加
五、主从复制原理
六、主从方式有几种
七、mysql主从数据不一致的原因
八、mysql的优化
九、什么是事务的特征
十、数据库读写分离的好处
十一、怎样优化sql语句
十二、mysql的同步方式
十三、mysql的数据备份有几种
希望能够帮助到大家!
引言:明人不说暗话,今天分享几个关于运维·关于数据库的面试题
一、数据库类型
Redis 是非关系型数据库:存储格式灵活,可以是key-value(一种以 键值 存储数据的数据库 )的形式,也可以是文本文档图片等形式,读写速度快,可以使用磁盘或者其他储存器作为载体,具有高扩展性,但是不支持事务也不支持sql语句。
Mysql是关系型数据库:支持事务,支持sql语句,支持行锁定,可以复杂查询,使用固定表结构,读写速度慢,因为使用的固定表结构导致存储方式不够灵活,对于高并发的读取请求,磁盘性能是很大的瓶颈。
二、数据库引擎
innodb:支持事务,不支持行锁定;
myisam:有较高的查询能力,不支持事务;
memory:需要很快的读写速度但对安全性要求不高的情况下可以使用,对表的大小有要求,支持锁表不支持所锁行。
三、mysql数据库类型
整数型;
浮点型;
文本文字类型;
日期时间类型;
枚举型;
集合型。
四、mysql的约束添加
主键PRIMARY KEY (PK):用于唯一的标识表行的数据,定义逐渐约束后,此列不能被重复
自增(AUTO_INCREMENT):标识该字段的值自动增长
空值null:此列不能为空
default:默认约束,即使没有插入数据,也会有默认值
unique:唯一约束,该列不允许被复制
五、主从复制原理
主库开启binlog日志,授权用户密码;
从库开启两个线程io线程和sql线程,io线程会像主库binlog日志文件发起读取请求,读取成功后记录在从库的Realy-log(中继日志文件)当中,sql线程读取Realy-log(中继日志)后如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
六、主从方式有几种
两种做法:
binlog日志方式:从节点需要手动指定binlog日志的名称、位置或时间
gtid方式:从节点不需要手动指定binlog日志的名称、位置或时间;会自动锁定
七、mysql主从数据不一致的原因
网络延迟,主从复制是基于binlog的异步复制,通过网络传送binlog文件,网络延迟是大多数引起数据不一致的原因
主从机器的负载不一致:mysql主从复制是主库开启dump线程,从库开启io和sql线程。当任何一台服务器负载过高,导致其中一个线程资源不足,会出现主从不一致的情况
版本不一致
max_allowed_packet(一次传送数据包的过程中最大允许的数据包大小)设置不一致:主库设置的max_allowed_packet设置的比从库大,一条大的sql语句在主库能执行完毕,但在从库上无法执行,导致主从不一致。
解决方法:
1、stop slave set global sql_slave_skip_counter=1 跳过这一步错误;
2、重新做主从:先锁表,导入数据数据+同步,重新做主从
八、mysql的优化
安全方面:修改默认端口号,禁止root用户远程登录,对用户降权,以普通用户运行mysql
性能方面:升级硬件,内存、磁盘、优化sql语句(开启慢查询)、设置索引
参数优化:innodb的buffer参数调大,连接数调大、缓存的参数优化
架构方面:读写分离,一主多从,高可用
九、什么是事务的特征
原子性:指事务是不可拆分的最小单元
隔离性:数据库允许多个事务同时对数据库的数据进行读写和修改的能力,隔离性为了防止多个事务并发执行由于交叉执行导致的数据不一致。隔离级别分为读未提交、读提交、可重复读、串行化。隔离等级越高,数据越安全,但是消耗的资源就越多。
一致性:事务中的sql语句,要么全部成功,要么全部失败。
持久性:事务结束后,对数据的修改是永久写入到磁盘的,即使系统故障也不会丢失
十、数据库读写分离的好处
分摊服务器的压力,
提高系统的处理效率。
主要分担主服务器的读取压力,间接提高了主库的写入性能,读请求全部发给了从库。
十一、怎样优化sql语句
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
3. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
4.避免频繁创建和删除临时表,以减少系统表资源的消耗。
十二、mysql的同步方式
「异步复制」:MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经接收并处理。这样就会有一个问题,一旦主库宕机,此时主库上已经提交的事务可能因为网络原因并没有传到从库上,如果此时执行故障转移,强行将从提升为主,可能导致新主上的数据不完整。
「全同步复制」:指当主库执行完一个事务,并且所有的从库都执行了该事务,主库才提交事务并返回结果给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。
「半同步复制」:是介于全同步复制与全异步复制之间的一种,主库只需要等待至少一个从库接收到并写到 Relay Log 文件即可,主库不需要等待所有从库给主库返回 ACK。主库收到这个 ACK 以后,才能给客户端返回 “事务完成” 的确认。
十三、mysql的数据备份有几种
逻辑备份:mysqldump,备份sql语句,速度慢,恢复也慢,需要一条一条执行sql语句
物理备份:xtrabackup备份,备份速度慢,文件大,恢复速度快。
物理备份又分为3种备份方式:
完全备份:备份当前的所有数据
增量备份:备份上一次备份到当前时间点的更新的所有数据(上一次备份可以是全备也可以是增量备份),数据占用磁盘空间小,但恢复过程较复杂
差异备份:备份上一次完全备份到当前时间点的所有数据,占用磁盘空间比较大,恢复过程简单文章来源:https://www.toymoban.com/news/detail-809772.html
文章来源地址https://www.toymoban.com/news/detail-809772.html
希望能够帮助到大家!
到了这里,关于关于运维·关于数据库面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!