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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介:

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yht1990.blog.51cto.com/9014030/1788484

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、指出MySQL引擎中Innodb与MyIsam的区别,生产环境中怎么选用存储引擎?        

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

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

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

   只有读没有写的业务就用MyIsam引擎


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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

    

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

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

        set global sql_slave_skip_counter =1;

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

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

        热备方式修复主从库

        操作过程

        1)先关闭从数据库

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

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

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

        5)changes主库的Log_file和位置点

        6)开启从库


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

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

    对大表进行move

   

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

    功能:

    同步复制

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

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

    新节点加入数据自动复制

    真正的并行复制,行级

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

    优势:

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

    不存在丢失交易的情况

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

    更小的客户端延迟

相关文章
|
4月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
394 18
|
5月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
872 1
|
7月前
|
运维 监控 数据可视化
一文拆解 YashanDB Cloud Manager,数据库运维原来还能这么“智能”!
传统数据库运维依赖人工,耗时耗力还易出错。YashanDB Cloud Manager(YCM)作为“智能运维管家”,实现主动、智能、可视化的运维体验。它提供实时资源监控、智能告警系统、自动巡检机制、高可用架构支持和强大的权限管理功能,帮助用户统一管理多实例与集群,减少人工干预,构建现代化数据库运维体系,让企业高效又安心地运行数据库服务。
|
7月前
|
人工智能 运维 关系型数据库
|
4月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
126 4
|
5月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本方案将大模型与MySQL运维深度融合,构建智能诊断、SQL优化与知识更新的自动化系统。通过知识库建设、大模型调用策略、MCP Server开发及监控闭环设计,全面提升数据库运维效率与准确性,实现从人工经验到智能决策的跃迁。
578 26
|
3月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。
|
7月前
|
Ubuntu 关系型数据库 Linux
Linux数据库安装
本文介绍了在CentOS 8.0和Ubuntu 22.04系统上安装、配置和启动MariaDB数据库服务器的详细步骤。包括通过`yum`和`apt`包管理器安装MariaDB服务,启动并检查服务运行状态,设置root用户密码以及连接数据库的基本操作。此外,还展示了如何在Ubuntu上更新软件包列表、安装依赖项,并验证MariaDB的版本和运行状态。通过这些步骤,用户可以成功部署并初始化MariaDB环境,为后续数据库管理与应用开发奠定基础。
293 61
|
8月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
514 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
7月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
下一篇
开通oss服务