Linux运维(数据库专题)面试题

1、什么是关系型数据库?什么是非关系型数据库?

关系型数据库概念:可以理解为一第二维表,每个关系都具有一个关系名,就是通常说的表名,是指爱用了关系模型来组织的数据库

非关系型数据库:关系型数据库暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

2、Redis、Memcached和MongoDB优点和局限性?

Memcached

Memcached的优点:

Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务   器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。

支持直接配置为session handle。

Memcached的局限性:

只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。

无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。

无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。

Memcached内存分配采用Slab Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引    发低利用率时依然出现踢出等问题。需要用户注重value设计。

Redis

Redis的优点:

支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)

支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

支持简单的事务需求,但业界使用场景很少,并不成熟。

Redis的局限性:

Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

Mogodb

mogodb是一种文档性的数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性(self-describing),呈现分层的树状数据结构。redis可以用hash存放简单关系型数据。

mogodb存放json格式数据。

适合场景:事件记录、内容管理或者博客平台,比如评论系统。

3、Redis两种保存快照的方式是什么?他们有什么区别?

快照模式和AOF模式

快照模式:将数据保存在内存中,再保存到磁盘中,性能高,但是可能会有少量数据丢失

AOF模式:性能差,一致性要求高,可以选用这种方法,一般生产环境两种都开

4、什么是主健?什么是外健?什么是索引?索引的优缺点是什么?

主健:主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

外健:表的外键就是 这个字段 是关联着别的表,且是别的表的主键。

索引:相当于书中的目录

优点:加快查询表记录的速度

缺点:会减慢对表记录的写(insert upadate delete)的速度

索引会占用物理磁盘空间

db.frm 保存表结构

db.MYD 保存表里数据

db.MYI 保存索引信息文件

5、主健、外健的作用是什么?并说明主健特点?

主健作用:1)保证实体的完整性;

2)加快数据库的操作速度

3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

特点 :

1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。

2)主键的值不可重复,也不可为空(NULL)。

外健作用: 使两张表形成关联,外键只能引用外表中的列的值!

6、什么是存储引擎?生产环境中怎么选用存储引擎?

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。

通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

7、什么是幻读?什么是脏读?什么是不可重复读?

幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改这种修改涉及到表中的全部数据行。同时第二个事务也修改这个表中的数据

这种修改是向表中插入一行新数据。那么以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

脏读:脏读就是指当一个事务正在访问数据并且对数据进行了修改而这种修改还没有提交到数据库中,这时另外一个事务也访问这个数据,然后使用了这个数据,实际这个数据并没有提交还不能正常使用

不可重复读:是指在一个事务内多次读同一数据。在这个事务还没有结束时另外一个事务也访问该同一数据。那么在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样在一个事务内两次读到的数据是不一样的因此称为是不可重复读。

8、什么是事务?什么是回滚?

事务:你的一次sql操作从开始执行到正确执行结速的这个过程称为事务

事务回滚:恢复到未操作一切动作前的状态

9、事务隔离的四种级别是哪四种?分别代表什么意思?

未提交读(read uncommitted):会出现脏读、不可重复读和幻读。

提交读(read committed):会出现不可重复读和幻读。

重复读(repeatable read):会出现幻读。

串行化(serializable):隔离级别最高,不允许出现脏读、不可重复读和幻读。

10、事务有几大特性?分别代表什么意思?

事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。

原子性: 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

一致性: 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。

隔离性:一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持续性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响

11、数据库默认的三个库是什么库?分别代表什么意思?

information_schema: 主要存储系统中的一些数据库对像信息,如用户信息,列信息,权限信息,字符集信息和分区信息等

performance_schema: 主要存储数据库服务器性能参数

mysql:主要存储系统的用户权限信息

test:该数据库为MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用

12、MySQL锁粒度是什么?MySQL有几种锁级别?说一下他的特性?

就是通常我们所说的锁级别。

MySQL有三种锁的级别:页级、表级、行级。

MySQL这3种锁的特性可大致归纳如下:

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

13、说一下数据库的几种备份方式和包启的意思?

冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;

温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;

热备(hot backup):备份的同时,业务不受影响。

14、简述如何搭建主从数据库以及工作模式?

搭建:1、主数据库修改my.cnf配置文件,打开log-bin功能,设置server-id,重启服务

2、在主服务器上授权服户可以从 从服务器 上连接自已,且有拷贝数据的权限

3、从服务器上修改my.cnf文件,设置server-id,重启服务

4、在从服务器上使用授权用户测试是否能连接登陆主数据库服务器

5、从服务器上建立同步账户信息

工作模式:从服务器的IO线程连接主数据库的IO线程,并从主服务器获取二进制日志,保存为本地的中继日志,

接着通过SQL线程执行中继日志里面的SQL语句,从而使主从库保持一致

15、主从数据库不能同步怎么办?

1、通过跳过错误来继续执行同步,适用于对数据一致性不是那么高的情况下

set global sql_slave_skip_counter =1;

2、重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

热备方式修复主从库

操作过程

1)先关闭从数据库

2)记录主库的log_file文件名和位置点

3)导出主库的数据库,拷贝到从库机器上

4)从库删除以前的老库,导进从主库拷贝过来的新库

5)changes主库的Log_file和位置点

6)开启从库

16、怎么清理数据库碎片?

查看哪个表空间最占用空间

对大表进行move

17、MariaDB集群的功能和优势是什么?

功能:

同步复制

真正的multi-master,即所有节点可以同时读写数据库

自动的节点成员控制,失效节点自动被清除

新节点加入数据自动复制

真正的并行复制,行级

用户可以直接连接集群,使用感受上与MySQL完全一致

优势:

因为是多主,所以不存在Slave lag(延迟)

不存在丢失交易的情况

同时具有读和写的扩展能力

更小的客户端延迟

节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

18、指出MySQL引擎中Innodb与MyIsam的区别,用哪一个好?

InnoDB: 支持行锁,支持事务,支持外健 ,批量插入速度慢,内存使用高,空间使用高,数据可压缩,独享表空间

MyISAM:支持表锁,不支持事务,不支持外健 ,批量插入速度快,内存使用低,空间使用低,数据不可压缩,共享表空间

在一般的既有读又有写的业务中,建议选用Innodb引擎。

19、MySQL出现sql锁是怎么回事,如何优化?

使用show full processlist查看锁表的命令,再确定是sql语句的效率问题,还是没建索引,或是数据库引擎的问题。

20、如何优化MySQL?

1、对查询频繁的表加主键或索引

2、对重要数据的mysql做主主或主从的高可用与读写分离

3、对数据量大的表或库,进行分表或分库,减轻总表大小。

4、优化my.cnf在内存参数。提高内存的使用率。

时间: 2024-08-23 13:36:17

Linux运维(数据库专题)面试题的相关文章

Linux运维MySQL必会面试题100道

老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o

(转)Linux运维MySQL必会面试题100道

老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o

Linux运维基础命令笔试题--看看你会多少?

老男孩Linux运维基础2728期课后学习效果上机闭卷考试题详解 http://edu.51cto.com/course/course_id-5577.html 如果你觉得不错,请为他点赞和评价.这样可以激发他更强的回报小伙伴的欲望!   老男孩教育linux运维就业班第一周课后学习效果能力上机大考察 (每题10分共130分,过100即可,请给出详细步骤) 1.创建目录/data/oldboy ,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写入内容"inet ad

Linux运维跳槽必备面试题

1.mysql部分:四种隔离级别:A.READ UNCOMMITTED(未提交读),事务中的修改,即使没有提交,对其他事务也都是可见的,事务可以读取未提交的数据,也被称为脏读(Dirty Read),这个级别会导致很多问题B.READ COMMITTED(提交读),大多数数据库系统的默认隔离级别,一个事务开始时,只能"看见"已经提交的事务所做的修改,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的,也叫不可重复读(nonrepeatable read),有可能出现幻读(

Linux运维工程师中级面试题

1.解释top命令和vmstat命令 2.请写出iptables语句 3.mysql高可用方案有哪些?mysql备份方案有哪些?有什么缺点? 4.写出Apache 2.x的两种工作模式,以及各自的工作原理.如何查看Apache当前支持的模块.并查看在哪种模式下工作. 5.linux基础问题 (1).linux怎么查看用户登录日志 (2).linux中utmp,wtmp,lastlog,messages各文件的作用 (3).列举你熟悉的服务区性能查看命令 (4).服务器间怎么实现无密码登录.列举操

Linux运维工程师经典笔试题30道

1. cat -n file1 file2 命令的意思是? 把文件file1和file2连在一起,然后输出到屏幕上. 2. Linux下查看服务程序占用的端口命令是什么? netstat –apn 3. 对于Linux说法,下列说法正确的是() 线性访问内存非法时,当前线程会进入信号处理函数 4. 在Linux系统上,下面那个命令不可以用来查看文件内容() A cat    B ls     C less   D more 5. 下面哪个命令可以从文本文件的每一行中截取指定内容的数据. A cp

Linux运维基础命令笔试题--解答

题目来源 老男孩BLOG:http://oldboy.blog.51cto.com/2561410/1752116 1.创建目录/data/oldboy ,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写入内容"inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0"(不包含引号). mkdir -p /data/oldboy echo "inet addr:10.0.0.8 Bcast:10

简单的Linux运维面试题,

前几天朋友去面试,拿到的一份Linux运维面试题,不太全,数据库方面的没有弄到,有些没有答完,欢迎大神补充 1.写出至少四种Linux发行版本 Redhat.centos.suse.ubuntu.debian.gentoo.slackware.fedora.arch Linux Suse是基于Slackware的二次发行版 Ubuntu是基于debian的二次发行版 Fedora属于红帽系列 Arch linux是轻量级的,是独立的发行版,没有基于其他版本 2.分别写出ftp.vpn.dns.s

合格linux运维人员必会的30道shell编程面试题及讲解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1632876 超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平. 课程牛不牛,不是看老师.课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊. http://edu.51cto.com/course/course_id-5257.html 企业合格的lin

运维屌丝回答网传Linux运维面试题

前段时间网上流传有很多Linux运维的面试题,豪鹫也看了一些,但很多都没有附答案,最近工作比较空闲,利用这三年的运维经验,做做题目,当是巩固一下知识,如答案有误或者各位有更好的答案,欢迎点评.这里当然有小部分答案是网上整理过来的, 请原作者见谅,此作为引用. 以下是面试题,蓝色内容为豪鹫的回答:(未完待续--)  上海实战面试经历----Linux 系统/运维面试总结 同学在上海某网络公司面试题: 1.LINUX系统软件安装和卸载的常见方法 答:A.rpm包卸载:rpm -e XXX.rpm