2020最新数据库面试专题及答案

263 阅读8分钟

请简洁描述MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别? 

SQL标准定义的四个隔离级别为: 

read uncommited : 读到未提交数据  

read committed :脏读,不可重复读 

repeatable read :可重读 

serializable : 串行事物 

在MySQL中ENUM的用法是什么?  

ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。 

SQL语法如下: Create table size (name ENUM( ' Smail, 'Medium' , 'Large') ; 

CHAR和VARCHAR的区别? 

CHAR和VARCHAR类型在存储和检索方面有所不同。  

CHAR列长度固定为创建表时声明的长度,长度值范围是1到255.  

当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格.  

列的字符串类型可以是什么? 

字符串类型是:SET BLOB ENUM CHAR TEXT VARCHAR 

MySQL 中使用什么存储引擎?

存储引擎称为表类型,数据使用各种技术存储在文件中。 

技术涉及: Storage mechanism Locking levels Indexing Capabilities and functions. 

TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么? 

创建表时 TIMESTAMP 列用 Zero 更新。只要表中的其他字段发生更改,UPDATE CURRENT_TIMESTAMP 修饰符就将时间戳字段更新为当前时间。 

主键和候选键有什么区别?

表格的每一行都由主键唯一标识, 一个表只有一个主键。 

主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。 

MySQL 数据库服务器性能分析的方法命令有哪些? 

Show status 一些值得监控的变量值: Bytesreceived 和 Bytessent 和服务器之间来往的流量。     Com 服务器正在执行的命令。 Created 在查询执行期限间创建的临时 表和文件。 Handler 存储引擎操作。 Select 不同类型的联接执行计划。 Sort_* 几 种排序信息。 Show session status like ‘Select’; Show profiles SET profiling=1; Show profiles\G Show profile; 

LIKE 和 REGEXP 操作有什么区别? 

LIKE 和 REGEXP 运算符用于表示 ^ 和%。 

SELECT * FROM WHERE * REGEXP "^b"; 

SELECT * FROM WHERE * LIKE "%b"; 

BLOB 和 TEXT 有什么区别?

BLOB 

BLOB 是一个二进制对象,可以容纳可变数量的数据。有四种类型的 BLOB 

● TINYBLOB 

● BLOB 

● MEDIUMBLOB和 

● LONGBLOB 

它们只能在所能容纳价值的最大长度上有所不同。 

TEXT 

TEXT 是一个不区分大小写的 BLOB。四种 TEXT 类型 

● TINYTEXT

● TEXT 

● MEDIUMTEXT 和

● LONGTEXT 

它们对应于四种 BLOB 类型,并具有相同的最大长度和存储要求。 

BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写,对 TEXT 值不区分大小写。

数据库的三范式? 

第一范式:数据库表的每一个字段都是不可分割的。 

第二范式:数据库表中的非主属性只依赖于主键。 

第三范式:不存在非主属性对关键字的传递函数依赖关系。

MySQL 中有哪几种锁? 

MyISAM 支持表锁,InnoDB 支持表锁和行锁,默认为行锁。 

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

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

Redis 是什么?两句话做一下概括

是一个完全开源免费的 key-value 内存数据库 2. 通常被认为是一个数据结构服务 器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets。 

● Redis 使用最佳方式是全部数据 in-memory。 

● Redis 更多场景是作为 Memcached 的替代者来使用。 

● 当需要除 key/value 之外的更多数据类型支持时,使用 Redis 更合适。 

● 当存储的数据不能被剔除时,使用 Redis 更合适。 

Redis(管道,哈希)

● Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset, hash 等数据结构的存储。 

● Redis 支持数据的备份,即 master-slave 模式的数据备份。 

● Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可 以再次加载进行使用。

Redis 实现原理或机制

Redis 是一个 key-value 存储系统。和 Memcached 类似,但是解决了断电后数据 完全丢失的情况,而且她支持更多无化的 value 类型,除了和 string 外,还支持 lists(链表)、sets(集合)和 zsets(有序集合)几种数据类型。这些数据类型都支 持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。 

Redis 是一种基于客户端 - 服务端模型以及请求 / 响应协议的 TCP 服务。这意味着通常情况下一个请求会遵循以下步骤: 

客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。

 在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。 

Redis 管道技术最显著的优势是提高了 Redis 服务的性能。 

分区是分割数据到多个 Redis 实例的处理过程,因此每个实例只保存 key 的一个子集。 

通过利用多台计算机内存的和值,允许我们构造更大的数据库。 

通过多核和多台计算机,允许我们扩展计算计算能力;通过多台计算机和网络适配器,允 许我们扩展网络带宽。

什么是 MongoDB?

非关系型数据库 (NoSql),Mongo DB 很好的实现了面向对象的思想 (OO 思想), 在 Mongo DB 中 每一条记录都是一个 Document 对象。Mongo DB 最大的优势在 于所有的数据持久操作都无需开发人员手动编写 SQL 语句, 直接调用方法就可以轻松 的实现 CRUD 操作. 

MongoDB 特点

高性能、易部署、易使用,存储数据非常方便。

主要功能特性有:

面向集合存储,易存储对象类型的数据。

模式自由。

支持动态查询。 

支持完全索引,包含内部对象。 

支持查询。 

支持复制和故障恢复。

 使用高效的二进制数据存储,包括大型对象(如视频等)。 

自动处理碎片,以支持云计算层次的扩展性 支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++ 语言的驱动程序,社区中也提供了对 Erlang 及. NET 等平台的驱动程序。 

文件存储格式为 BSON(一种 JSON 的扩展)。 

可通过网络访问。 

Redis 有什么用?

只有了解了它有哪些特性,我们在用的时候才能扬长避短,为我们所用。

**1. 速度快:**使用标准 C 写,所有数据都在内存中完成,读写速度分别达到 10 万 / 20 万。 

**2. 持久化:**对数据的更新采用 Copy-on-write 技术,可以异步地保存到磁盘 上,主要有两种策略,一是根据时间,更新次数的快照(save 300 10 )二是 基于语句追加方式 (Append-only file,aof) 。

**3. 自动操作:**对不同数据类型的操作都是自动的,很安全。

 4. 快速的主 -- 从复制,官方提供了一个数据,Slave 在 21 秒即完成了对 Amazon 网站 10G key set 的复制。 

5. Sharding 技术: 很容易将数据分布到多个 Redis 实例中,数据库的扩展是 个永恒的话题,在关系型数据库中,主要是以添加硬件、以分区为主要技术形 式的纵向扩展解决了很多的应用场景,但随着 web2.0、移动互联网、云计算 等应用的兴起,这种扩展模式已经不太适合了,所以近年来,像采用主从配 置、数据库复制形式的,Sharding 这种技术把负载分布到多个特理节点上去 的横向扩展方式用处越来越多。

这里对 Redis 数据库做下小结

1. 提高了 DB 的可扩展性,只需要将新加的数据放到新加的服务器上就可以了 

2. 提高了 DB 的可用性,只影响到需要访问的 shard 服务器上的数据的用户 

3. 提高了 DB 的可维护性,对系统的升级和配置可以按 shard 一个个来搞,对 服务产生的影响较小 

4. 小的数据库存的查询压力小,查询更快,性能更好

-end-

  • 创作不易, 非常欢迎大家的点赞、评论和关注
  • 你的点赞、评论以及关注
  • 是对我最大的支持和鼓励!