greenplum 程序开发优化原则.docx

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
greenplum 程序开发优化原则 1、批量数据处理后,无论成功与否,都应该进行vaccum analyze table_name. 2、对于大表的DISTINCT操作,请用 GROUP BY操作进行替代 3、对于大表的UNION操作,请用UNION ALL 加 group by进行改写 4、嵌套查询操作,尽量改写成连接查询操作 5、大表更新操作,尽量通过外连接+插入+truncate进行替代 6、大表删除操作,尽量通过外连接+插入+truncate进行替代 7、尽量避免进行存储过程函数嵌套导致锁冲突,考虑使用其它语言进行总体调度,比如shell,java,c等。 8、尽量避免在数据库中使用序列,游标, 循环,考虑对数据进行整体操作。 9、避免高度频繁的建表删表操作,容易造成字典破碎和字典锁的问题,因此可以通过临时表和其它语言方式替代。 11、检查大表的hash键定义是否可以保证每个segment存储均匀,数据处理均匀,以及大表连接操作过程中可以尽量避免motion操作。从目前业务看,可以考虑客户ID, 电话号码作为首选的hash键,然后进行检查。 12、为了加快开发进度,减少开发时的彼此影响,建议每个开发人员装一个gp虚拟机,相关表放入少量记录,进行单步测试。通过单步测试后,统一提交到测试服务器上进行联合测试和压力测试。 13、运行较大操作时,不建议使用pgadmin完成操作,建议写成shell脚本在后台进行测试。避免频繁不正常中断操作,对整个开发产生影响 14、尽量避免不正常中断操作,如需不正常中断操作,请使用函数pg_cancel_backend函数,并耐心等待3~5分钟,再继续相关操作,避免造成数据字典破坏。 pg_cancel_backend and pg_terminate_backend send signals (SIGINT or SIGTERM respectively) to backend processes identified by process ID. The process ID of an active backend can be found from the procpid column of the pg_stat_activity view, or by listing the postgres processes on the server (using ps on Unix or the Task Manager on Windows). 两者都是boolean类型的,返回为true或者false。 但是在greenplum(3.3.6)中使用时发现GP中并没有pg_terminate_backend这个函数,故略去不说。 pg_cancel_backend这个函数主要是用来取消一个查询(进程),权限必须是管理员或者查询的所有者。具体如下: 首先,查出你要取消的进程号 select procpid from pg_stat_activity where ......; 其次,用这个函数来取消 select pg_cancel_backend(procpid);。 这个函数主要是用来回滚事务,但是会话(session)并不会退出去,比如你要用这个函数来终止一个IDLE是不可能的。 当一个查询语句查询时间较长时用这个函数偶尔也不好用,这个时候需要多执行几次或去OS上用kill命令来删除这个进程效果就来得快。

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档