热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

GPDB管理员笔记(二)管理数据

并发访问控制与事务型数据库系统通过锁机制来控制并发访问的机制不同,GPDB(与PostgreSQL一样)使用多版本控制(MultiversionConcurrencyControlMVCC)保证数据一致性。这意味着在查询数据库时,每个事务看到的只是数据的快照,其确保当前的事务不会看到其

并发访问控制与事务型数据库系统通过锁机制来控制并发访问的机制不同,GPDB(与PostgreSQL 一样)使用多版本控制(Multiversion Concurrency Control/MVCC)保证数据一致性。这 意味着在查询数据库时,每个事务看到的只是数据的快照,其确保当前的事务不会 看到其

并发访问控制 与事务型数据库系统通过锁机制来控制并发访问的机制不同,GPDB(与PostgreSQL
一样)使用多版本控制(Multiversion Concurrency Control/MVCC)保证数据一致性。这
意味着在查询数据库时,每个事务看到的只是数据的快照,其确保当前的事务不会
看到其他事务在相同记录上的修改。据此为数据库的每个事务提供事务隔离。
MVCC以避免给数据库事务显式锁定的方式,最大化减少锁争用以确保多用户环境
下的性能。在并发控制方面,使用MVCC而不是使用锁机制的最大优势是,MVCC对
查询(读)的锁与写的锁不存在冲突,并且读与写之间从不互相阻塞。
空间回收 libo=# vacuum test;
VACUUM VACUUM命令还会收集表级别的统计信息,如记录数、占用磁盘页面数,所以在
装载数据之后对全表执行VACUUM是有必要的,这同样适用AO表

查询分析: libo=# explain select * from t where id=1;
QUERY PLAN
----------------------------------------------------------------------------
Gather Motion 1:1 (slice1; segments: 1) (cost=0.00..1.01 rows=1 width=8)
-> Seq Scan on t (cost=0.00..1.01 rows=1 width=8)
Filter: id = 1
(3 rows)

libo=# vacuum t;
VACUUM
libo=# explain select * from t where id=1;
QUERY PLAN
----------------------------------------------------------------------------
Gather Motion 1:1 (slice1; segments: 1) (cost=0.00..3.04 rows=3 width=8)
-> Seq Scan on t (cost=0.00..3.04 rows=1 width=8)
Filter: id = 1
(3 rows)

libo=#
查询计划分析 若一个查询表现出很差的性能,查看查询计划可能有助于找到问题点。下面是
一些需要查看的东西:
 计划中是否有一个操作花费时间超长?查询计划中是否有一个操作花费
了大部分的处理时间?例如,如果一个索引扫描比预期的时间超长,也许
该索引已经处于过期状态,需要考虑重建索引。还可临时尝试使用enable_
之类的参数查看是否可以强制选择不同的计划(可能会更好的效果),这些
参数可以设置特定的查询计划操作为开启或关闭状态。
 规划器的评估是否接近实际情况?执行EXPLAIN ANALYZE查看规划器
评估的记录数与真实运行查询操作返回的记录数是否一致。如果差异巨大,
可能需要在TABLE相关的COLUMN上收集更多的统计信息。相关信息可
查看”维护数据库统计信息”章节。
 选择性强的条件是否较早出现?选择性强的条件应该被较早应用,从而使
得在计划树中上传的记录更少。如果查询计划在选择性评估方面没有对查
询条件作出正确的判断,可能需要在TABLE相关的COLUMN上收集更多
的统计信息。相关信息可查看”维护数据库统计信息”章节。也可以尝试调
整SQL语句WHERE子句的顺序。
 规划器是否选择了最佳的关联顺序?如查询使用多表关联,需要确保规划
器选择了选择性最好的关联顺序。那些可以消除大量记录的关联应在更早
的被执行,从而使得在计划树中上传的记录更少。如果规划器没有选择最
佳的关联顺序,可以尝试设置join_collapse_limit=1并在SQL语句中构造特
定的关联顺序,从而可以强制规划器选择指定的关联顺序。还可以尝试在
TABLE相关的COLUMN上收集更多的统计信息。相关信息可查看”维护数据 据库统计信息”章节。
 规划器是否选择性的扫描分区表?如果使用了分区,规划器是否值扫描了
查询条件匹配的相关子表?父表的扫描返回0条记录(本该如此,因为父表
不包含任何数据)。作为显示选择性扫描分区查询计划的例子,参见”验证
分区策略”章节。
 规划器是否合适的选择了HASH聚合与HASH关联操作?HASH操作通常
比其他类型的关联和聚合要快。记录在内存中的比较排序比磁盘快。要使
用HASH操作,必须有足够的工作内存用以放置评估的记录。对于特定才
查询可以尝试增加工作内存来查看是否能够获得更好的性能。如果可能,
为该查询执行EXPLAIN ANALYZE,将可以得到哪些操作缓存到磁盘(由
于工作内存不足导致),多少的工作内存被使用,以及需要多少内存以保证
不缓存到磁盘。例如:
Work_mem used: 23430K bytes avg, 23430K bytes max (seg0).
Work_mem wanted: 33649K bytes avg, 33649K bytes max (seg0) to lessen
workfile I/O affecting 2 workers.
需要注意的是wanted信息只是一个提示,基于写出工作文件的量是不精确的。
需要的最小work_mem可能会比提示的值或多或少一些



推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
author-avatar
mobiledu2502859507
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有