千家信息网

如何开始优化数据库

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,如何开始优化数据库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。对于数据库的调优, 可以从以下几个方面来考虑, 硬件的配置, 网络的
千家信息网最后更新 2024年09月21日如何开始优化数据库

如何开始优化数据库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

对于数据库的调优, 可以从以下几个方面来考虑, 硬件的配置, 网络的配置, 数据库的配置, SQL 撰写和解读的方式, 索引的维护等等问题.去入手, 下面仅仅对数据库配置和SQL的rewrite进行相关调优的讲解.

通常来说调整数据库性能需要系统性的知识, 例如你要知道数据库系统服务的对象是在线分析系统还是在线事务系统,这对于硬件系统提供的IO CPU 都是有不同的需求的,例如你是要多少CPU, RAID设置的方式, 多大容量的内存,以及数据库的设置问题等等.当然可以通过PGBANCH来对数据库的TPS 进行一个测试.

而第二部对于数据库的优化就要在数据库的运行后,在开始,在这个阶段需要对系统进行一个观察和监测例如你可以使用pgbadger监控工具对于系统进行整体的监控,或者powa和pg_stat_statements 对于数据库进行问题的查找,找到瓶颈和慢查询等信息.

分析的首要要点就是对于慢查询的分析,一个较慢的较差的SQL, 就需要重写除此以外缺失的索引应该被创建,数据库的配置应该被重设,物理结构应该被重构等等.

下面就要开始对数据库的configuration 进行调试.

对于数据库的最大连接数在数据库的配置中是非常重要的事情, 默认max_ connections设置的默认值是100,如果设置的值较低,可以适当提高work_mem的配置值.

在POSTGRESQL中,通常会使用连接池来提高系统性能降低内存的浪费,并且降低由于连接killing和重建连接锁消耗的时间.

常用的两种连接池软件

pgbouncer

pgpool-II

当然在商业等级中连接池也可以使用类似JAVA的 connection-pooling 或者 C3P0 等等.

以下的几个设置是关于内存的设定的

共享缓冲区(shared_buffers):共享缓冲区的默认值为

32 MB;但是,建议将其设置为总内存的25%左右,但是在Linux系统上不超过8 GB,在windows系统上不超过512 MB。有时,将shared_buffers增加到一个非常高的值会导致性能的提高,因为数据库可以完全缓存在RAM中。但是,过多地增加这个值的缺点是无法为诸如排序和散列之类的CPU操作分配内存。

(不是太赞同书中的关于这段的内容,实际上这个值应该根据应用系统的情况来设置,例如是OLTP OLAP, 以及运行一段时间的统计信息,在进行二次调整会更好)

Working Memory (work_mem)

工作内存(work_mem):默认值为1 MB;对于cpu绑定操作,增加这个值很重要。work_mem设置与连接数相关联,因此使用的RAM总数等于连接数乘以work_mem。工作内存用于排序和散列,因此它会影响使用顺序BY的查询,
不同的、联合查询等.

如我们在查询语句是,通过 explain analyze 时可以看到这个语句的内存使用的情况

扩展:

书中到此内存的内容就没有了实际上,PG的内存调整还涉及

temp_buffers = 8MB 针对每个数据库进行的临时BUFFER的设置,在未使用的状态下每个SESSION会占用 64bytes作为占位符

maintenance_work_mem = 64MB

指定维护操作(如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY)所使用的最大内存量。它默认为64兆字节(64MB)。由于数据库会话一次只能执行其中的一个操作,而且安装通常不会同时运行许多操作,因此可以将这个值设置为比work_mem大得多的值。较大的设置可能提高清空和恢复数据库转储的性能。

autovacuum_work_mem 在数据库中最重要的autovacuum中使用的内存,默认值 -1表示为使用 maintenance_work_mem的配置来替代这个配置.

shared_memory_type = mmap

dynamic_shared_memory_type = posix

关于如何开始优化数据库问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 数据库 内存 系统 配置 问题 查询 性能 分析 重要 内容 调整 运行 不同 最大 信息 实际 实际上 情况 方式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浪潮服务器电源风扇告警 ai服务器引擎有什么用 ftp文件共享服务器 无锡无线网络技术有哪些 新药店如何做代码数据库动态维护 led屏网络安全应急预案 360网络安全技术包括 物理服务器迁移到虚拟机方案 有关网络安全视频下载 基于创业思维的软件开发技术考试 郑州 学软件开发需要什么基础 access 数据库路径 摩尔庄园手游进入服务器需要多久 威海商务大酒店软件开发公司 网络安全的四大内容包括物理安全 2019税务网络安全宣传周 有没有方舟进化宝可梦的服务器 单位淘汰的服务器可以家用吗 webgl用什么软件开发 文本阅读软件开发 密云区环保软件开发怎么样 网络安全工作如何开展 服务器成本支出方案 db2数据库中的time 360网络安全技术包括 十大数据库创建 电信公司网络安全宣传 服务器国产替代龙头股 杭州软件开发增值税 中国工商软件开发中心技术部
0