数据库面试题.pdf

所需积分/C币:9 2019-08-20 20:50:55 284KB PDF
49
收藏 收藏
举报

数据库面试题 pdf
a.高度事物性的系统:例如银行或会计系统。传统的关系型数 据库目前还是更适用于需要大量原子性复杂事务的应用程序。 b传统的商业智能应用:针对特定问题的BI数据库会对产生 高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。 C.需要SQL的问题 d重要数据,关系数据 优点:弱一致性(最终一致),更能保证用户的访问速度 文档结构的存储方式,能够更便捷的获取数 内置 GridFS,高效存储二进制大对象(比如照片和视频) 支持复制集、主备、互为主备、自动分片等特性 动态查询 全索引支持,扩展到内部对象和内嵌数组 缺点:不支持事务 MongoDB占用空间过大 维护工具不够成熟 6.Mysq1和 redis高可用性 MySQL Replication是 My SQL官方提供的主从同步方案,用于将 个 My SQL实例的数据,同步到另一个实例中。 Replication为保证 数据安全做了重要的保证,也是现在运用最广的MySL容灾方案。 Replication用两个或以上的实例搭建了 My SQL主从复制集群,提供 单点写入,多点读取的服务,实现了读的 scale out. Sentinel是 Redis官方为集群提供的高可用解决方案。在实际 项目中可以使用 sentinel去做 redis自动故障转移,减少人工介入 的工作量。另外 sentinel也给客户端提供了监控消息的通知,这样 客户端就可根据消息类型去判断服务器的状态,去做对应的适配操作。 下面是 Sentinel1主要功能列表: Monitoring: Sentinel持续检查集群中的 master、 slave状态 判断是否存活。 Notification:在发现某个 redis实例死的情况下, Sentinel 能通过API通知系统管理员或其他程序脚本。 Automatic failover:如果一个 master挂掉后, sentinel1立马 启动故障转移,把某个 slave提升为 master。其他的 slave重新配 置指向新 master。 Configuration provider:对于客户端来说 sentinel通知是有效可 信赖的。客户端会连接 sentinel去请求当前 master的地址,一旦发 生故障 sentinel会提供新地址给客户端。 7.数据库索引 数据库索引,是数据库管理系统中一个排序的数据结构,以协助 快速查询、更新数据库表中数据。索引的实现通常使用 B TREE B TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得 到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针, 存储引擎会根据指针快速寻找数据。 8.数据库怎么优化查询效率 1.储存引擎选择:如果数据表需要事务处理,应该考虑使用 InnoDB,因为它完全符合ACID特性。如果不需要事务处理,使用默 认存储引擎 My ISAM是比较明智的 2.分表分库,主从, 3.对查询进行优化,要尽量避免全表扫描,首先应考虑在 Where 及 order by涉及的列上建立索引 4.应尽量避免在 where子句中对字段进行nul1值判断,否则 将导致引擎放弃使用索引而进行全表扫描 5.应尽量避免在 where子句中使用!=或<>操作符,否则将 引擎放弃使用索引而进行全表扫描 6.应尽量避免在 where子句中使用or来连接条件,如果一个 字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全 表扫描 段,否则频繁调用会引起明显的性能消耗,同时带来大量厅动关 7. Update语句,如果只更改1、2个字段,不要 Update全 8.对于多张大数据量(这里几百条就算大了)的表J0IN,要先 分页再J0IN,否则逻辑读会很高,性能很差。 9.数据库优化方案 1.优化索引、SQL语句、分析慢查询; 2.设计表的时候严格根据数据库的设计范式来设计数据库; 3.使用缓存,把经常访问到的数据而且不需要经常变化的数据 放在缓存中,能 节约磁盘I0; 4.优化硬件;采用SSD,使用磁盘队列技术(RAID0,RAID1,RDID5) 5.采用 My SQL内部自带的表分区技术,把数据分层不同的文件, 能够提高磁 盘的读取效率; 6.垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/0 7.主从分离读写;采用主从复制把数据库的读操作和写入操作 分离开来; 8.分库分表分机器(数据量特别大),主要的的原理就是数据 路由; 9.选择合适的表引擎,参数上的优化; 10.进行架构级别的缓存,静态化和分布式; 11.不采用全文索引; 12.采用更快的存储方式,例如 NOSQL存储经常访问的数 0. Redis mongodb优缺点 MongoDB和 Redis都是 NOSQL,采用结构型数据存储。二者在使 用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过 程,持久化的处理方法不同。 MongoDB建议集群部署,更多的考虑到 集群方案, Redis更偏重于进程顺序写入,虽然支持集群,也仅限于 主-从模式 Redis优点: 1读写性能优异 2支持数据持久化,支持AOF和RDB两种持久化方式 3支持主从复制,主机会自动将数据同步到从机,可以进行读写 分离。 4数据结构丰富:除了支持 string类型的 value外还支持 string、hash、set、 sortedset、list等数据结构。 缺点: 1 Redis不具备自动容错和恢复功能,主机从机的宕机都会导致 前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP 才能恢复。 2主机岩机,宕机前有部分数据未能及时同步到从机,切换IP 后还会引入数据不一致的问题,降低了系统的可用性。 3 Redis的主从复制用全量复制,复制过程中主机会fork出 个子进程对内存做一份快照,并将子进程的内存快照保存为文件发 送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件 较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机 新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波 动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运 营造成了不小的麻烦。 4 Redis较难支持在线扩容,在集群容量达到上限时在线扩容会 变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足 够的空间,这对资源造成了很大的浪费 优点:弱一致性(最终一致),更能保证用户的访问速度 文档结构的存储方式,能够更便捷的获取数 内置 GridFS,高效存储二进制大对象(比如照片和视频 支持复制集、主备、互为主备、自动分片等特性 动态查询 全索引支持,扩展到内部对象和内嵌数组 缺点:不支持事务 MongoDB占用空间过大 维护工具不够成熟 11.数据库负载均衡 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网 络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共 同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高 性能的独立服务器。 1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库 的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程 序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就 可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载 采取有效的均衡策略,来调整每次连接到哪个数据库。 2、实现多据库数据同步 对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。 这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户 从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这 是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时 候就可以有多个资源,实现均衡。比较常用的方法是 Moebius for SQL Server集群, Moebius for SQL Server集群采用将核心程序驻留在 每个机器的数据库中的办法,这个核心程序称为 Moebius for SQL Server中间件,主要作用是监测数据库内数据的变化并将变化的数 据同步到其他数据库中。数据同步完成后客户端才会得到响应,同步 过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时 间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份 数据在任何时刻数据的一致性。正因为 Moebius中间件宿主在数据 库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变 化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策 略以保证数据同步成本的最小化。 数据条数很少,数据内容也不大,则直接同步数据 数据条数很少,但是里面包含大数据类型,比如文本,二进制数 据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和 传输所用的时间。 数据条数很多,此时中间件会拿到造成数据变化的SQL语句,然 后对SQL语句进行解析,分析其执行计划和执行成本,并选择是同步 数据还是同步SQL语句到其他的数据库中。此种情况应用在对表结构 进行调整或者批量更改数据的时候非常有用。 3、优缺点 优点 (1)扩展性强:当系统要更高数据库处理速度时,只要简单地增 加数据库服务器就可以得到扩展。 (2)可维护性:当某节点发生故障时,系统会自动检测故障并转 移故障节点的应用,保证数据库的持续工作。 (3)安全性:因为数据会同步的多台服务器上,可以实现数据集 的冗余,通过多份数据来保证安全性。另外它成功地将数据库放到了 内网之中,更好地保护了数据库的安全性 (4)易用性:对应用来说完全透明,集群暴露出来的就是一个 缺点: (1)不能够按照Web服务器的处理能力分配负载。 (2)负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。 12. Mysql集群操作步骤 原博客地址 Mysql群集( Cluster)简介 MySL群集需要有一组计算机,每台计算机的角色可能是不一样 的。 My SQL群集中有三种节点:管理节点、数据节点和SL节点。群 集中的某计算机可能是某一种节点,也可能是两种或三种节点的集合 这三种节点只是在逻辑上的划分,所以它们不一定和物理计算机是 一对应的关系。 管理节点(也可以称管理服务器)主要负责管理数据节点和SQL 节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状 态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置 数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群 集日志。 数据节点用于存储数据。 SQL节点跟一般的 My SQL服务器是一样的,我们可以通过它 进行SQL操作 用的 Mysqlserver已经不能满足群集的要求,配置群集需要使用 My SQLClustero MySQLCluster的配置 首先找三台电脑,或者是开三个虚拟机,管理节点部署在 台机子上,其他两台每台都部署一个数据节点和一个SQL节点。这里 以两台机子举例,其中一台机器A(IP为192.168.193.90)部署管 理节点数据节点和SQL节点,另一台机器B(IP为192.168.193.50) 部署数据节点和SQL节点。 其实最好不要将管理节点跟数据节点部署到一台机子上, 因为如果数据节点宕机会导致管理节点也不可用,整个 My SQL群集就 都不可用了。所以一个 My SQL群集理想情况下至少有三台服务器,将 管理节点单独放到一台服务器上。暂以两台举例,只是为了说明三种 节点的配置启动方法。 将上面下载的安装包解压,并改文件夹名为 mysql,因为需要多 次在命令行中操作,所以名字改短后更容易输入 配置管理节点,配置数据节点,配置SQL节点 启动管理节点,启动数据节点,启动SQL节点 测试 My SQLCluster:我们需要测试三种情况 1.在任一SQL节点对数据节点进行操作后,各数据节点是否能够 实现数据同步。例如,我们在机器A上新创建一个数据库myDB,然 后再建一个表 student(新建表如下命令: createtable student(id int(2) engine= ndbcluster),插入若干数据,接着我们到机器B 上查看是否能看到新的数据库myDB和新的表 student以及插入数据。 2.当关闭任一数据节点后,在所有SQL节点中进行操作是否不 受其影响。例如,我们关闭机器A上的数据节点服务,在两台主机上 应该能够继续对数据库进行各种操作 3.关闭某数据节点进行了数据库操作,然后重新启动,所有SQL 节点的操作是否正常。 13.怎样解决海量数据的存储和访问造成系统设计瓶颈的问题? 水平切分数据库:可以降低单台机器的负载,同时最大限度的降 低了宕机造成的损失;分库降低了单点机器的负载;分表,提高了数 据操作的效率, 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能 性; 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; 读写分离策略:最大限度了提高了应用中读取数据的速度和并发 量 14.MySL集群的优缺点 优点 a)99.999%的高可用性 b)快速的自动失效切换 c)灵活的分布式体系结构,没有单点故障 d)高吞吐量和低延迟 e)可扩展性强,支持在线扩容 缺点 a)存在很多限制,比如:不支持外键 b)部署、管理、配置很复杂 c)占用磁盘空间大,内存大 d)备份和恢复不方便 e)重启的时候,数据节点将数据l0ad到内存需要很长时间 15.你用的mysq1是哪个引擎,各引擎间有什么区别 主要 My IsAM与 InnoDB两个引擎,其主要区别如下 InnoDB支持事务, My IsaM不支持,这一点是非常之重要。 事务是一种高 级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还 原,而 My ISAM 就不可以了 、 My ISAM适合查询以及插入为主的应用, InnoDB适合频繁修 改以及涉及到 安全性较高的应用; 三、 InnoDB支持外键, My ISAM不支持; 四、 My ISAM是默认引擎, InnoDB需要指定;

...展开详情
试读 14P 数据库面试题.pdf
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 领英

  • GitHub

  • 回归勋章

  • 签到达人

  • 技术圈认证

关注 私信
上传资源赚钱or赚积分
最新推荐
数据库面试题.pdf 9积分/C币 立即下载
1/14
数据库面试题.pdf第1页
数据库面试题.pdf第2页
数据库面试题.pdf第3页

试读结束, 可继续读2页

9积分/C币 立即下载