PSQL数据库操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PSQL数据库操作

  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 字节每行 100000 数据行 -------------------- = 735 数据页(向上取整) 128 行每页 735 数据页 * 8192 字节/页 = 6,021,120 字节(6 MB)   索引不需要这么多的额外消耗,但也确实包括被索引的数据,因此它们也可能很大。   空值NULL存放在位图中,因此占用很少的空间。   4.6)为什么我的查询很慢?为什么这些查询没有利用索引?   并非每个查询都会自动使用索引。只有在表的大小超过一个最小值,并且查询只会选中表中较小比例的记录时才会采用索引。 这

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档