- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PostgreSQL操作问题 转载
PostgreSQL操作问题 转载
作者:无痕客发表于2010-08-01 00:40原文链接阅读:1评论:0 PostgreSQL操作问题
4.1)如何只选择一个查询结果的头几行?或是随机的一行?
如果你只是要提取几行数据,并且你在执行查询中知道确切的行数,你可以使用LIMIT功能。如果有一个索引与ORDER BY中的条件匹配,PostgreSQL可能就只处理要求的头几条记录,(否则将对整个查询进行处理直到生成需要的行)。如果在执行查询功能时不知道确切的记录数,可使用游标(cursor)和FETCH功能。
可使用以下方法提取一行随机记录的:
SELECT cols FROM tab ORDER BY random()
LIMIT 1;
4.2)如何查看表、索引、数据库以及用户的定义?如何查看psql里用到的查询指令并显示它们?
在psql中使用\dt命令来显示数据表的定义,要了解psql中的完整命令列表可使用\?,另外,你也可以阅读psql的源代码文件pgsql/src/bin/psql/describe.c,它包括为生成psql反斜杠命令的输出的所有SQL命令。你还可以带-E选项启动psql,这样它将打印出执行你在psql中所给出的命令的内部实际使用的SQL查询。PostgreSQL也提供了一个兼容SQL的INFORMATION SCHEMA接口,你可以从这里获取关于数据库的信息。
在系统中有一些以pg_打头的系统表也描述了表的定义。
使用psql-l指令可以列出所有的数据库。
也可以浏览一下pgsql/src/tutorial/syscat.source文件,它列举了很多可从数据库系统表中获取信息的SELECT语法。
4.3)如何更改一个字段的数据类型?
在8.0版本里更改一个字段的数据类型很容易,可使用ALTER TABLE ALTER COLUMN TYPE。
在以前的版本中,可以这样做:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col=CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
你然后可以使用VACUUM FULL tab指令来使系统收回无效数据所占用的空间。
4.4)一行记录,一个表,一个库的最大尺寸是多少?
下面是一些限制:
一个数据库最大尺寸?无限制(已存在有32TB的数据库)
一个表的最大尺寸?32 TB
一行记录的最大尺寸?1.6 TB
一个字段的最大尺寸?1 GB
一个表里最大行数?无限制
一个表里最大列数?250-1600(与列类型有关)
一个表里的最大索引数量?无限制
当然,实际上没有真正的无限制,还是要受可用磁盘空间、可用内存/交换区的制约。事实上,当这些数值变得异常地大时,系统性能也会受很大影响。
表的最大尺寸32 TB不需要操作系统对大文件的支持。大表用多个1 GB的文件存储,因此文件系统尺寸的限制是不重要的。
如果缺省的块大小增长到32K,最大的表尺寸和最大列数还可以增加到四倍。
4.5)存储一个典型的文本文件里的数据需要多少磁盘空间?
一个Postgres数据库(存储一个文本文件)所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。
例如,假设有一个100,000行的文件,每行有一个整数和一个文本描述。假设文本串的平均长度为20字节。文本文件占用2.8 MB。存放这些数据的PostgreSQL数据库文件大约是6.4 MB:
32字节:每行的头(估计值)
24字节:一个整数型字段和一个文本型字段
+4字节:页面内指向元组的指针
--
60字节每行
PostgreSQL数据页的大小是8192字节(8 KB),则:
8192字节每页
---=136行/数据页(向下取整)
60字节每行
数据行
--=735数据页(向上取整)
128行每页
735数据页*8192字节/页=6,021,120字节(6 MB)
索引不需要这么多的额外消耗,但也确实包括被索引的数据,因此它们也可能很大。
空值NULL存放在位图中,因此占用很少的空间。
4.6)为什么我的查询很慢?为什么这些查询没有利用索引?
并非每个查询都会自动使用索引。只有在表的大小超过一个最小值,并且查询只会选中表中较小比例的记录时才会采用索引。这是因为索引扫描引起的随即磁盘存取可能比直接地读取表(顺序扫描)更慢。
为了判断是否使用索引,PostgreSQL必须获得有关表的统计值。这些统计值可以使用VACUUM ANALYZE,或ANALYZE获得。使用统计值,优化器知道表中有多少行,就能够更好地判断是否利用索引。统
您可能关注的文档
最近下载
- 非ST段抬高型急性冠脉综合征诊断和治疗指南(2024)解读.pptx VIP
- 电器理论基础(福州大学)中国大学MOOC慕课 章节测验期末考试答案.pdf VIP
- 高工答辩重点题库.pdf VIP
- 七上19《大雁归来》课件.pptx VIP
- 多发伤护理查房(完整版).pptx VIP
- 非ST段抬高型急性冠脉综合征诊断和治疗指南(2024)解读.pptx VIP
- Zippo2018美版年册完整集合.doc VIP
- 统编六年级上册习作《有你,真好》教学设计.docx VIP
- 部编版六年级语文上册第八单元习作:有你,真好【精品教学课件】.pptx VIP
- 高考地理微专题:港珠澳大桥(共31张PPT).pptx VIP
原创力文档


文档评论(0)