有关数据库性能的基本知识
作者:Thomas LaRock,SolarWinds首席极客
云栖网:随着数据要素市场化建设上升为中国的国家战略,数据已成为中国企业和行业的一项战略资源。统计数字也说明了这一点:根据中国信息通信研究院(CAICT))的统计,2020年全球数据库市场规模为671亿美元,其中中国数据库市场规模约为240.9亿元人民币,占全球的5.2%。预计到2025年,全球数据库市场规模有望达到798亿美元,CAICT还预测中国数据库市场规模将达到688亿元人民币,复合年增长率(CAGR)为23.4%。
内存、CPU和索引——了解基本原理可以帮你解决难题
数据库对企业的成功至关重要,它帮助企业管理最重要的资产——数据,因此IT专业人士必须将提高数据库的性能放在首位。了解数据库是如何工作的并且知道该监控什么,对数据库的整体性能提升至关重要。下面我们就来看一看影响数据库性能的一些基本问题。
内存的重要性
内存是影响数据库性能的关键因素。数据库引擎自带内存管理和用于管理数据检索的内部操作系统。也就是说,数据库会根据需要自动使用尽可能多的内存。
与内存访问相比,磁盘直接读/写的速度很慢,所以数据库引擎会尽可能使用内存进行缓存。数据库有一个缓存区来存储经常或最近使用的数据块,因此引擎不必去磁盘检索这些页面。
如果数据库引擎的内存耗尽,它会使用一个临时数据库或文件系统上的一个文件来完成任务。这类似于对磁盘进行系统进程分页,会对整体性能造成不利的影响。不过,可通过在构建和执行数据库查询时监控内存的使用情况来避免这种情况,帮助系统减少资源消耗。通常情况下,当内存已满时,也可以通过增加内存来提高性能。
在CPU中进行的工作
CPU也是一项对数据库性能至关重要的资源。一般情况下,如果数据库服务器的CPU利用率很高,则说明有些方面尚未优化,比如索引等简单的问题,或者工作量过大。即便数据库经过优化,这些问题也有可能发生。闲置的连接可能对数据库性能产生负面影响,它们消耗内存和CPU资源并影响整体并发。
如果CPU利用率高于预期,请查看数据库引擎,找到使用CPU最多的查询并进行分析和优化。同时,找到频繁运行并在每次运行时都消耗CPU资源的查询,优化这些小规模的查询将减少整体CPU的消耗,避免CPU资源被 “蚕食殆尽”。
索引对性能的影响
在内存和CPU之外,还有一些会影响数据库性能的因素。除了高效的查询结构和数据库设计,高效的索引也能提高数据库的性能。
索引是数据库中表的子集,由一个或多个表列组成,但不一定包含所有的行。索引与表相链接,所以当插入、更新或删除数据时,这些操作会在数据库标记事务完成之前先反映在索引中。
如果没有索引,数据库引擎会扫描查询中所请求的每张表的每一条记录,而数据的删除、更新或插入会导致其他查询阻塞。索引显著减少了操作的I/O量并抵消了读写活动的开销,加快了查询的执行速度。
高效的索引对提升数据库性能的作用显而易见,但也不要过于依赖索引。无需为所有区域建立索引,低效的索引反而会给数据库引擎增加工作量,导致性能问题。相反,应该集中精力为在数据库中最能受益的区域建立索引,例如经常访问的栏目。
还有许多方法来优化数据库性能,但只要掌握了这些基本知识,就可以了解数据库中哪里在使用资源,或者哪里产生了问题。