当前位置:   article > 正文

数据库服务 面试可能会问的问题_数据库售前面试

数据库售前面试

一、MySQL数据库管理系统

1、mysql的 4个默认数据库

 information_schema: information_schema:是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问数限等)

Mysql:主要负责存储数据库的用户、权限设置、关键字等mysal自己需要使用的控制和管理信息

performance_schema:主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为 PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表

Sys: Sys库所有的数据源来自: performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况

 2、给数据升顺

格式: select 编号,姓名,职业 from yg order by 编号 asc/desc;

  1. 例:以编号进行排序
  2. mysql> select 编号,姓名,职业 from yg order by 编号;
  3. +--------+-----------+-----------------+
  4. | 编号 | 姓名 | 职业 |
  5. +--------+-----------+-----------------+
  6. | 100 | 小光 | 云计算 |
  7. | 170 | 小乔 | IT工程师 |
  8. | 180 | 小i | 云计算 |
  9. | 200 | 王小红 | java工程师 |
  10. | 220 | 小V | 云计算 |
  11. | 666 | 蒙牛 | apache工程师 |
  12. +--------+-----------+-----------------+
  13. 6 rows in set (0.00 sec)

3、count统计、group by 分组

  1. 例:统计总共
  2. mysql> select count(*) from yg;
  3. +----------+
  4. | count(*) |
  5. +----------+
  6. | 6 |
  7. +----------+
  8. 1 row in set (0.00 sec)
  1. 例:统计有多少个重复的
  2. mysql> select 职业,count(*) from yg group by 职业;
  3. +-----------------+----------+
  4. | 职业 | count(*) |
  5. +-----------------+----------+
  6. | apache工程师 | 1 |
  7. | IT工程师 | 1 |
  8. | java工程师 | 1 |
  9. | 云计算 | 3 |
  10. +-----------------+----------+
  11. 4 rows in set (0.00 sec)

4、事务(transaction)

保证成批操作要么完全执行,要么完全不执行,维护数据的完整性。简单来说就是要么成功要么不成功

5、一个事务中包含多条 SQL 语句,在 SQL 语句之间的关系

1、事务可以是 NSQL 语句(N >= 0)
2、不是所有数据库存储引擎都支持事务,InnoDB 存储引擎支持事务处理

6、数据库事务特性(ACID)

事务特性作用
原子性(Atomic)事务的所有操作,要么全部完成,要么全部不完成,不会结束在某个中间环节
一致性(Consistency)事务开始之前和事务结束之后,数据库的完整性限制未被破坏
隔离性(Isolation)当多个事务并发访问数据库中的同一数据时,所表现出来的是相互关系
持久性(Durability)事务完成之后,所做的修改会进行持久化保存,不会丢失

7、 事务并发不进行事务隔离

脏读事务 A 读到未提交事务 B 修改的数据,如果此时事务 B 中途执行失败回滚,那么此时事务 A 读取到的就是脏数据
不可重复读同一个事务中,对同一份数据读取的结果不一致(针对某一个数据)
幻读同一个事务中,同一个查询多次返回的结果不一样(针对表中总行)
区别
脏读和不可重复读脏读是事务读取了还未提交事务的更新数据。不可重复读是同一个事务中,几次读取的数据不同
不可重复读和幻读都是在同一个事务中,前者是几次读取数据不同,后者是几次读取数据整体不同

 8、隔离级别

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

9、MySQL常用的索引

普通索引
index加速查找
唯一索引
主键索引primary key加速查找+约束(不为空且唯一)
唯一索引unique加速查找+约束 (唯一)
联合索引
-primary key(id,name)联合主键索引
-unique(id,name)联合唯一索引
-index(id,name)联合普通索引
全文索引
fulltext用于搜索很长一篇文章的时候,效果最好
空间索引
spatial了解就好,几乎不用

10、在什么时候二进制日志会重新生成?

1、重启mysql服务:systemctl restart mysql
2、进入myslq数据库:输入 flush logs;     刷新二进制日志
3、配置my.cnf 文件,根据二进制文件大小进行切割

11、二进制日志的格式

由 bin_log_format={ statement | row | mixed } 定义

statement基于语句,记录生成数据的语句
缺点:在于如果当时插入信息为函数生成,有可能不同时间点执行结果不一样
row基于行数据
缺点:有时候数据量会过大
mixed混合模式
mysql自行决定何时使用statement, 何时使用row 模式

查看当前二进制日志记录格式

  1. mysql> show variables like 'binlog_format';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | binlog_format | ROW |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)

修改二进制日志记录格式

  1. mysql> set session binlog_format=statement; #修改二进制记录格式
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> show variables like 'binlog_format';
  4. +---------------+-----------+
  5. | Variable_name | Value |
  6. +---------------+-----------+
  7. | binlog_format | STATEMENT |
  8. +---------------+-----------+
  9. 1 row in set (0.00 sec)

 注意:5.7之前是statement,5.7之后是基于行的

12、工作原理

 1、innobackupex 在启动 xtrabackup 进程后,会一直等 xtrabackup 备份完 InnoDB 文件,方式就是等待 xtrabackup_suspended_2 这个文件被创建出来
2、xtrabackup 在备完 InnoDB 数据后,就在指定目录下创建出这个文件,然后等这个文件被 innobackupex 删除
3、innobackupex 检测到文件 xtrabackup_suspended_2 被创建出来后,就继续往下走
4、innobackupex 在备份完非 InnoDB 表后,删除 xtrabackup_suspended_2 这个文件,这样就通知 xtrabackup 可以继续了,然后等 xtrabackup_log_copied 被创建
5、xtrabackup 检测到 xtrabackup_suspended_2 文件删除后,就可以继续往下了

13、mysql的主从复制工作原理

主从复制过程中,主服务器有一个工作线程 I/O dump 线程,从服务器有两个工作线程I/O 线程SQL 线程

主库把接收的SQL请求记录到自己的binlog日志中,从库的 I/O 线程去请求主库的 binlog 日志,并将 binlog 日志写到中继日志中,然后从库重做中继日志的 SQL 语句。主库通过I/O dump 线程给从库 I/O 线程传送 binlog 日志

1、异步复制

异步复制是MySQL默认的复制方式,主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程,但是一旦主库宕机,就有可能出现丢失数据的情况

2、半同步复制

 MySQL默认的复制方式是异步复制,但是当主库宕机,在高可用架构坐准备切换,就会造成新的主库丢失数据的现象

MySQL5.5版本之后引入了半同步复制,但是主从服务器必须同时安装半同步复制插件。在该功能下,确保从库接收完成主库传递过来的binlog内容已经写入到自己的relay log后才会通知主库上面的等待线程。如果等待超时(超时参数:rpl_semi_sync_master_timeout),则关闭半同步复制,并自动转换为异步复制模式,直到至少有一台从库通知主库已经接收到binlog信息为止

 14、经常用Redis做什么?

redis:常用做数据库的缓存,缓存一些经常被客户端访问的数据,从而减轻后端数据库的压力

15、redis的持久化

实现方式

RDB持久化:Reids在内存中的数据库记录定时dump到磁盘上,类似于快照功能
AOF持久化:append only file:原理是将Reids的操作日志以追加的方式写入文件,近似实时性

二者的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储

16、搭建redis群集需要几个主从复制

3对:即3主3从

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号