SQL大全[1]
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
计信息将帮助规划器选择最合适的查询规划,并因此 而改善查询处理的速度.一种比较经常采用的策略是每天在 低负荷的时候运行一次 VACUUM和 ANALYZE. 和 VACUUM FULL 不同的是, ANALYZE 只需要在目标表上有一个读取锁, 因此它可以和表上的其它活动并行地运行. 对于大表,ANALYZE 采集表内容的一个随机的抽样做 统计,而不是检查每一行.这样即使是很大的表,我们也只需要很少的一些时间就可以完成分析.不过要注意的是统计只是近似的结果,而且每次运行ANALYZE都会有一些小变化,即使表内容实际上 没有改变也这样.这样会导致 EXPLAIN 所显示的 规划器计算的开销有一些小变化, 收集的统计信息通常包括一个每字段最常用数值的列表以及一个包线图,显示每个字段里数据的近似分布.如果 ANALYZE 认为它们都没有什么用, (比如,在一个唯一键字的字段上没有公共的数值) 或者是该字段数据类型不支持相关的操作符,那么它们都可以忽略.在用户手册 中有关于统计的更多信息. 分析的广度可以通过用 ALTER TABLE ALTER COLUMN SET STATISTICS (参阅 ALTER TABLE调整每字段的统计目标来控制.目标数值设置最常用数值列表中的记录的最大数目以及包线图中的最大块数.缺省的目标数值是 10,不过我们可以调节 这个数值获取规划器计算精度和 ANALYZE 运行所需要的 时间以及 pg_statistic 里面占据的空间数目之间的 平衡.特别是,把统计目标设置为零就关闭了该字段的统计收集. 对那些从来不参与到查询的 WHERE,GROUP BY,或者 ORDER BY 子句里的字段 是很有用的,因为规划器不会使用到这样的字段上的统计. ) 在被分析的字段中最大的统计目标决定为统计采样的表中的行的数目. 增大目标会导致做 ANALYZE 的时候成比例地 增大对时间和空间的需求. 兼容性 SQL92 里没有 ANALYZE 语句. -------------------------------------------------------------------------------- BEGIN BEGIN Name BEGIN -- 开始一个事务块 Synopsis BEGIN [ WORK | TRANSACTION ] 输入 WORK TRANSACTION 可选关键字。没什么作用。 输出 BEGIN 这表明一个新的事务已经开始. NOTICE: BEGIN: already a transaction in progress 这表明该事务已经运行,当前事务不受影响. 描述 缺省时,PostgreSQL 以 非链接模式(unchained mode)(在其他数据库系统里也称之为"自动提交("autocommit"))"。换句话说,每个用户语句都是在其自身的事务中运行并且在语句结束时隐含的调用一个提交(commit)(如果执行成功则提交,否则调用一个回卷)。 BEGIN 以链接模式(chained mode)初始化一个用户事务,也就是说所有 BEGIN 命令后的用户语句都将在一个事务里面执行直到一个明确的 COMMIT, ROLLBACK,或执行退出(abort)。在链接模式里执行的语句很明显地快得多,因为事务开始/提交(start/commit)需要大量的CPU和磁盘活动。在一个事务内部执行多条语句时因为可能修改若干个相关的表因而同样需要一致性。 在 PostgreSQL 里缺省的事务隔离级别是 READ COMMITTED, 这时在事务内部的查询只看到查询提交之前的(数据)修改。 所以,如果你需要更严格的事务隔离,你必须在 BEGIN 后马上使用 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE。 在 SERIALIZABLE 模式里,查询将只能看到整个事务开始之前的修改。 (实际上是在一个可串行化事务内部第一个 DML 语句执行前的数据)。 如果提交了事务, PostgreSQL 将保证要么实现所有更新, 要么所有更新都没有实现。事务有标准的 ACID (原子性,一致性,隔离性,持续性) (atomic,consistent,isolatable,and durable)属性。 注意 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 06—PL/SQL编程下一篇: 提高SQL Server安全性的一些建议
关于SQL大全[1]的所有评论