1.使用pg_cron按日创建分区表,会出现所在数据库对应用户权限不足的问题。
原因是pg_cron运行在postgres数据库中,是用superuser进行执行的,对应的分区表的owner为postgres,所以需要单独授权对表的所有操作权限。不知道直接改变owner能不能实现,需要测试验证一下。
2.对应分区表查询时只根据id不加分区键造成的cpu高占用问题。
在频繁进行插入更新时,会造成大量cpu的占用,但看io并不高。
优化前16核cpu占用率基本在75%以上,io 2M/S左右,可能更低。
优化后效果,16核cpu占用率在0.9%左右,io基本在10M/s .
实际经验告诉我们要用好分区表,必须查询的时候要带上分区键。
我现在综合想了一下,为啥分区表没有用上分区键导致cpu高,而io不高的原因。 1. pg16分区表充分利用了并行扫描机制,所以各个cpu很高;2.数据库有缓存以及操作系统有足够的缓存,所以大部分数据可以从内存或者操作系统的缓存里面去取,最终到达磁盘的io并不高。