天天看点

面试中,你是否被问到过,后端架构数据库对比及MySQL工作原理?

作者:程序员高级码农II

数据库对比

数据库,一般指的是关系型数据库。关系型数据库是建立在关系模型基础上的数据库,简单地说,关系型数据库就是由多张互相关联的二维行列表格组成的数据库。目前比较流行的数据库有MySQL、Oracle和Microsoft SQLServer等,下面分别进行介绍。

1.MySQL

MySQL是Oracle旗下的产品,其采用双授权政策,分为社区版和商业版。

得益于体积小、速度快、开源、获取成本低等特性,MySQL是目前最流行的数据库之一。在Web领域,MySQL更是中小型网站的不二选择。

MySQL社区版是一个开源软件,拥有庞大的用户群,几乎所有关于MySQL的问题都可以在网上得到答案。MySQL的性能逊色于Oracle等大型数据库,尤其是在海量数据处理和高并发情况下。

2.Oracle

Oracle是一款商用收费的数据库,拥有高效、稳定、安全等特性。

Oracle数据库在数据库领域一直处于领先的位置,适用于各种环境,是目前最流行的数据库之一。在银行、金融、保险等行业,一般都会选用安全性和稳定性更高的Oracle数据库。

Oracle不是开源软件,但是其拥有完备的文档和健全的服务。不过,因为没有开源社区的辅助,学习Oracle的成本过高,使用上遇到问题时,也很难在网上找到对应的解决方法。Oracle的性能高于其他数据库,在海量数据处理和高并发情况下,其性能更为出色。

3.Microsoft SQL Server

Microsoft SQL Server是微软公司开发的一款收费的数据库。MicrosoftSQL Server的收费和性能介于Oracle和商业版MySQL之间。一般情况下,Microsoft SQL Server只能运行在Windows系统上,而网站系统的服务器系统一般是Linux,所以在Web领域Microsoft SQL Server的使用很少。

4.大型网站的数据库选择

一般情况下,网站系统都是采用MySQL或者Oracle作为数据库。而大型网站在整体上,往往需要承受高并发压力和处理海量数据,所以出于性能考虑,理应选择Oracle。但是,Oracle具有昂贵的收费和较高的学习成本,这无疑会增加项目的成本负担。再者,大型网站是多个子系统的集合体,不是每个子系统都需要承受高并发压力和处理海量数据。因此,只使用Oracle作为大型网站系统的数据库是欠考虑的。

使用哪种数据库,更多的是基于项目成本及应用场景考虑。当然,有些时候大型网站系统可以同时使用MySQL和Oracle数据库,以达到优势互补的目的。另外,随着公有云的发展,公有云平台也会提供其特有的数据库,如果使用公有云的话,这些数据库也是可以考虑使用的。

注意:数据库的使用方式对数据库性能的影响十分巨大,当发现数据库处理能力低时,往往换一个高性能的数据库也不能明显地提高性能。提高数据库性能的关键,是对数据库使用的优化。

数据库的工作原理

在使用数据库之前,需要先清楚数据库的基本工作原理。本小节介绍的是MySQL的基本工作原理,并将其分成两个部分,分别是第三方软件与数据库通信和数据库工作原理。

1.第三方软件与数据库通信

数据库自身是一个独立软件,第三方软件需要与数据库建立通信后才能使用数据库。数据库提供“连接器”供第三方软件连接,第三方软件与数据库建立连接后,可以向数据库发送操作指令,数据库处理完指令后会返回对应结果,如图4.66所示。

注意:第三方软件与数据库的通信协议根据不同数据库会有所区别,但是基本上都是TCP/IP的应用层协议,原理上大同小异。

数据库接收的操作指令一般是SQL语句,SQL语句如代码4.43所示。

SQL(Structured Query Language,结构化查询语言)是对数据库进行操作的语言,用于存取、查询、更新数据和管理数据库。

注意:SQL不是编程语言,SQL语句只是一些数据库操作指令。另外,大部分的关系型数据库都支持SQL语句,但是在不同的数据库中,所支持的SQL语句会存在细微差异。

面试中,你是否被问到过,后端架构数据库对比及MySQL工作原理?

图4.66 第三方软件与数据库通信

代码4.43 SQL语句

#创建数据库

CREATE DATABASE database-name

#查询数据

select * from table1 where field1 like ’%value1%’

#更新数据

update table1 set field1=value1 where id=id_1

2.数据库工作原理

第三方软件使用数据库一般是通过发送指令实现的,因此,数据库的工作原理其实就是解析操作指令和根据指令操作数据。

以MySQL为例,其内部分成三层,服务层、存储引擎层和数据存储层,服务层负责接收和解析操作指令,MySQL接收的操作指令是SQL语句;存储引擎层负责具体数据操作,存储引擎可更换,但一般情况下只能选择一个;数据存储层是数据文件,数据文件是存储在磁盘上的文件。MySQL的工作原理如图4.67所示。

注意:数据库的核心是存储引擎,存储引擎直接影响数据库性能。

MySQL内部有多个引擎可以选择,但一般情况下保持默认的InnoDB引擎就可以了。

面试中,你是否被问到过,后端架构数据库对比及MySQL工作原理?

图4.67 MySQL工作原理

本文给大家讲解的内容是大型网站架构的技术细节:后端架构数据库对比及工作原理

  1. 下篇文章给大家讲解的内容是大型网站架构的技术细节:后端架构数据库--数据库设计
  2. 感谢大家的支持!

继续阅读