【网站架构】你真的理解数据库工作原理?为什么我的数据库跑在16核服务器上也很慢?如何提高MySQL的性能?

大家好,欢迎来到停止重构的频道。从本期开始,我们来聊一聊数据库(关系型数据库)。

这里的数据库指的是关系型数据库。也就是表格形式的数据库,如MySQL、Oracle等

由于数据库是绝大多数业务系统的核心,所以我们打算分三部分进行深入讲解:

1、数据库工作原理与性能调优

2、数据库设计

3、数据库事务与分布式事务

本期,我们先来讨论一下数据库工作原理与性能调。

数据库工作原理

首先我们来聊一下数据库工作原理。数据库本身是一个独立运行的软件,请求端需要与数据库建立连接后才能使用数据库。与数据库建立连接后,请求端就可以发送操作指令以操作数据库。操作指令其实就是SQL语句,SQL语句实际上就是一个字符串,数据库根据SQL语句处理完毕后,会将结果返回到请求端。

 

由此可见,请求端使用数据库是通过SQL语句(一条字符串)实现的。所以数据库的工作原理其实就是解析SQL语句并根据其含义操作数据。

数据库的工作原理与具体数据库软件是相关的,这里以MySQL为例,其他数据库的工作原理也可作为参考。

MySQL的内部是三层的,服务层、储存引擎层、数据存储层

 

服务层负责接收和解析SQL语句,如果是查询操作,数据库会先查询缓存。如果缓存命中会直接返回查询结果。这里需要注意的是,SQL语句虽然是大多数关系型数据库都支持的,但是不同的数据库,甚至是相同数据库的不同版本,所支持的SQL语句都会存在一定的差异。而这些差距虽然不大,但是切换数据库带来的工作量却是巨大的。至少需要重新测试所有后端接口。所以数据库在系统设计之初就应该定好具体数据库软件及其版本。

而存储引擎层是实际操作数据的部分(数据库软件的核心),储存引擎是可以切换的。不同存储引擎的性能和功能都是有所区别的,至少,不是所有引擎都支持数据库事务的。如果是MySQL的话,一般保持默认的存储引擎即可(InnoDB,MySQL5.5以后)。

数据存储层就是数据文件,数据文件一般存储在磁盘上。所以磁盘的读写性能也会直接影响数据库的性能。

性能调优

接下来,我们讨论数据库性能优化。这里的数据库性能优化指的是单台数据库服务器的优化,至于读写分离、分片存储等问题,会在整体架构的系统性能调优部分再作详细讲解(后端开发时可暂不考虑)。

我们常遇到一个问题,数据库即使部署在16核32G的服务器上,其实际的运行性能也不高。

如果是MySQL的话,我们推荐这样的配置以优化服务器性能(MySQL8)。经过Sysbench工具测试,在一台4核CPU、16G内存、7200转/s机械硬盘的服务器上运行MySQL。在单表10万行数据的前提下,模拟1000并发请求。

查询的QPS能达到30000以上(查询性能更依赖CPU、内存),写入的QPS能达到8000以上(写入性能更依赖磁盘性能)。

 

另外,数据库性能与数据量是相关的,特别是索引较多,数据更新频率较大的场景下。在测试时,最好针对不同的业务场景在单表10万行、100万行、500万行、1000万行数据量等场景都进行测试。这样,就可以根据业务增长预测未来将在什么时间点增加数据库的服务器数量,增加服务器是为了做读写分离、分片存储以降低单台服务器的压力。

当然,单个数据库的数据量是不能无限扩展的,MySQL的话单表超过1000万行以后会性能骤降(MySQL8有所增加,Oracle阀值高一些)。为了确保单台数据库服务器的数据量不会太大,需要做数据分片存储(分布式数据库)。即多个数据库服务器共同存储所有数据,单个数据库服务器只存储其中的一部分。

关于读写分离、分片存储等问题,一般后端写代码时是不受影响的,这里先不展开介绍。这部分的内容将会在后续整体架构部分讨论。

总结

以上就是数据库的工作原理与性能调优的相关内容,这里介绍的都是实际应用中较为关键的问题。至于更加深入的数据分区等问题,我们不作介绍(没实际应用意义,只能炫技)。如果要更加深入了解的话,请查看官方相关文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值