Q:存储空间不足的原因与解决方法
造成 PostgreSQL实例空间不足的主要有如下几种原因,各自解决方案参考如下。
(1)短时间内大量更新导致日志剧增
大量更新导致日志剧增,系统来不及归档和删除,占用了磁盘空间。您可以提高实例的存储空间容量,或者降低更新频率。
(2)复杂查询导致临时表溢盘
查询操作含有大数据量的连接、排序等操作,处理过程中产生临时表并溢出到磁盘,短时间内造成大量空间占用。您可以给每个查询指定临时表空间上限,当单个查询生成的临时表空间达到上限就会报错。这样就能及时发现有问题的SQL语句,并避免磁盘空间被占满。
Q:CPU使用率过高的原因与解决方法
A:当CPU使用率过高(甚至高达100%时),建议您参考以下步骤进行处理。
步骤 1 先核实一下当前业务是否处于高峰期,因为高峰期会产生过多的连接数。您可以从控制台的监控告警模块,查看云数据库PostgreSQL连接数的变化。
步骤 2 通过如下命令,查看当前活跃连接数的变化,是否处于正常范围。
selectcount(*)frompg_stat_activitywherestatenotlike'%idle';
步骤 3 如果活跃连接数正常,则考虑有性能很差耗时很长的SQL被大量执行。结合控制台的慢日志查询与视图等方法,定位查找有效的慢SQL查询。
步骤 4 对于业务非必须的目标慢SQL查询,建议直接结束该查询来恢复业务。对于业务必须的慢SQL查询,一方面深度优化SQL语句,另一方面最好对频繁使用的代码设置索引。