搜索
首页数据库mysql教程GPDB管理员笔记(二)管理数据

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

Jun 07, 2016 pm 03:28 PM
并发控制数据笔记管理管理员访问

并发访问控制与事务型数据库系统通过锁机制来控制并发访问的机制不同,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可能会比提示的值或多或少一些


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
将用户添加到MySQL:完整的教程将用户添加到MySQL:完整的教程May 12, 2025 am 12:14 AM

掌握添加MySQL用户的方法对于数据库管理员和开发者至关重要,因为它确保数据库的安全性和访问控制。1)使用CREATEUSER命令创建新用户,2)通过GRANT命令分配权限,3)使用FLUSHPRIVILEGES确保权限生效,4)定期审计和清理用户账户以维护性能和安全。

掌握mySQL字符串数据类型:varchar vs.文本与char掌握mySQL字符串数据类型:varchar vs.文本与charMay 12, 2025 am 12:12 AM

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

MySQL:字符串数据类型和索引:最佳实践MySQL:字符串数据类型和索引:最佳实践May 12, 2025 am 12:11 AM

在MySQL中处理字符串数据类型和索引的最佳实践包括:1)选择合适的字符串类型,如CHAR用于固定长度,VARCHAR用于可变长度,TEXT用于大文本;2)谨慎索引,避免过度索引,针对常用查询创建索引;3)使用前缀索引和全文索引优化长字符串搜索;4)定期监控和优化索引,保持索引小巧高效。通过这些方法,可以在读取和写入性能之间取得平衡,提升数据库效率。

mysql:如何远程添加用户mysql:如何远程添加用户May 12, 2025 am 12:10 AM

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

MySQL字符串数据类型的最终指南:有效的数据存储MySQL字符串数据类型的最终指南:有效的数据存储May 12, 2025 am 12:05 AM

tostorestringsefliceflicyInmySql,ChooSetherightDataTypeBasedyOrneOrneEds:1)USEcharforFixed-LengthStstringStringStringSlikeCountryCodes.2)UseVarcharforvariable-lengtthslikenames.3)USETEXTCONTENT.3)

MySQL:字符串数据类型可用哪些字符集?MySQL:字符串数据类型可用哪些字符集?May 10, 2025 am 12:07 AM

mysqloffersvariouscharactersetsforstringdatatypes:1)latin1 forwesterneuropeanlanguages,2)utf8 formultingualsupport,3)utf8mb4f OREXTEDENDENDENENICODECLUDINGEMOJIS,4)UCS2FORIXED-WIDTHENCODING,5)assiiforbasiclatin.ChoosideStherightStetSetensensersdaintegrity

mysql:斑点流比存储它们更好吗?mysql:斑点流比存储它们更好吗?May 10, 2025 am 12:06 AM

流式传输BLOB确实比直接存储更好,因为它能减少内存使用和提高性能。1)通过逐步读取和处理文件,避免了数据库膨胀和性能下降。2)流式传输需要更复杂的代码逻辑,且可能增加I/O操作次数。

MySQL字符串类型:存储,性能和最佳实践MySQL字符串类型:存储,性能和最佳实践May 10, 2025 am 12:02 AM

mySqlStringTypesimpactStorageAndPerformanCeaseAsfollows:1)长度,始终使用theSamestoragespace,whatcanbefasterbutlessspace-felfficity.2)varCharisvariable varcharisvariable length,morespace-morespace-morespace-effficitybuteftife buteftife butfority butfority textifforlyslower.3)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境