分享更有价值
被信任是一种快乐

PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么

文章页正文上

本篇内容主要讲解“PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么”吧!优化思路:0、为每个表执行 ANALYZE然后分析 EXPLAIN (ANALYZE,BUFFERS) sql。1、对于多表查询,查看每张表数据,然后改进连接顺序。2、先查找那部分是重点语句,比如上面SQL,外面的嵌套层对于优化来说没有意义,可以去掉。3、查看语句中,where等条件子句,每个字段能过滤的效率。找出可优化处。比如oc.order_id = oo.order_id是关联条件,需要加索引oc.op_type = 3 能过滤出1/20的数据,oo.event_type IN (…) 能过滤出1/10的数据,这两个是优化的重点,也就是实现确保op_type与event_type已经加了索引,其次确保索引用到了。尽量避免排序的数据量尽量少,并保证在内存里完成排序。(至于具体什么数据量能在内存中完成排序,不同数据库有不同的配置:oracle是sort_area_size;postgresql是work_mem (integer),单位是KB,默认值是4MB。mysql是sort_buffer_size 注意:该参数对应的分配内存是每连接独占!)过滤的数据量比较少,一般来说 40% ,基本不走索引(会全表扫描)保证值的数据类型和字段数据类型要一直。对索引的字段进行计算免费主机、域名时,必须在运算符右侧进行计算。也就是 to_char(oc.create_date, ‘yyyyMMdd’)是没用的表字段之间关联,尽量给相关字段上添加索引。复合索引,遵从最左前缀的原则,即最左优先。(单独右侧字段查询没有索引的)1、hash join放内存里进行关联。适用于结果集比较大的情况。比如都是200000数据2、nest loop从结果1 逐行取出,然后与结果集2进行匹配。适用于两个结果集,其中一个数据量远大于另外一个时。结果集一:1000结果集二:1000000在多表联查时,需要考虑连接顺序问题。1、当postgresql中进行查询时,如果多表是通过逗号,而不是join连接,那么连接顺序是多表的笛卡尔积中取最优的。如果有太多输入的表, PostgreSQL规划器将从穷举搜索切换为基因概率搜索,以减少可能性数目(样本空间)。基因搜索花的时间少, 但是并不一定能找到最好的规划。2、对于JOINLEFT JOIN / RIGHT JOIN 会一定程度上指定连接顺序,但是还是会在某种程度上重新排列:FULL JOIN 完全强制连接顺序。如果要强制规划器遵循准确的JOIN连接顺序,我们可以把运行时参数join_collapse_limit设置为 1主要有如下几个方面。EXPLAIN命令可以查看执行计划免费主机、域名,这个方法是我们最主要的调试工具。由于统计信息不是每次操作数据库都进行更新的,一般是在 VACUUM 、 ANALYZE 、 CREATE INDEX等DDL执行的时候会更新统计信息,因此执行计划所用的统计信息很有可能比较旧。 这样执行计划的分析结果可能误差会变大。以下是表tenk1的相关的一部分统计信息。(5 rows)其中 relkind是类型,r是自身表,i是索引index;reltuples是项目数;relpages是所占硬盘的块数。一般写法:如果明确用join的话,执行时候执行计划相对容易控制一些。例子:(autocommit=false)我们有的处理中要对同一张表执行很多次insert操作。这个时候我们用copy命令更有效率。因为insert一次,其相关的index都要做一次,比较花费时间。有时候我们在备份和重新导入数据的时候,如果数据量很大的话,要很几个小时才能完成。这个时候可以先把index删除掉。导入在建index。如果表的有外键的话,每次操作都没去check外键整合性。因此比较慢。数据导入后在建立外键也是一种选择。增加这个参数可以提升CREATE INDEX和ALTER TABLE ADD FOREIGN KEY的执行效率。增加这个参数可以提升大量数据导入时候的速度。这个参数设置为无效的时候,能够提升以下的操作的速度CREATE TABLE AS SELECTCREATE INDEXALTER TABLE SET TABLESPACECLUSTER等。表中数据大量变化的时候建议执行VACUUM ANALYZE。对生产运行的数据库要用定时任务crontb执行如下操作:到此,相信大家对“PostgreSQL数据库性能调优的注意点及pg数据库性能优化方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: mysql字符集如何修改

本篇内容主要讲解“mysql字符集如何修改”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql字符集如何修改”吧! 第一步:查看当前字符集首先需要查看当前MySQL的字符集。可以使用以下命令:这里展示了两个变量…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册