青少年编程与数学 02-007 PostgreSQL数据库应用 06课题、数据库操作

青少年编程与数学 02-007 PostgreSQL数据库应用 06课题、数据库操作

课题摘要:本课题介绍了PostgreSQL数据库的操作,包括数据库文件组成、系统数据库、创建和删除数据库以及数据库配置和信息查看。数据库文件组成涉及数据文件、事务日志文件、表空间文件、配置文件等。系统数据库如postgres、template1和template0,对PostgreSQL运行至关重要。创建数据库通过CREATE DATABASE语句实现,而删除数据库使用DROP DATABASE语句。数据库配置包括设置搜索路径、字符集、事务隔离级别等,可通过命令行或图形界面工具如pgAdmin进行。查看数据库信息可通过pgAdmin的浏览器面板、查询工具、统计信息视图和日志视图等多种方式。这些操作对数据库管理、监控和维护至关重要。


一、数据库的文件组成

在PostgreSQL中,每个数据库的文件组成主要包括以下几种:

  1. 数据文件

    • 主数据文件 :PostgreSQL中没有与SQL Server中.mdf对应的文件,但数据库的数据和对象存储在数据目录(通常是pgdata)中。这个目录包含了数据库的所有表、索引、视图、存储过程等对象的数据。
  2. 事务日志文件(WAL)

    • 日志文件 :PostgreSQL使用WAL(Write-Ahead Logging)来记录所有修改数据的事务,以确保事务的持久性和数据库的崩溃恢复。这些日志文件存储在pg_xlogpg_wal目录下。
  3. 表空间文件

    • 次要数据文件:PostgreSQL支持表空间(tablespaces),允许数据库管理员将数据库对象分配到不同的文件或磁盘上。这些文件类似于SQL Server中的次要数据文件(.ndf),用于分散数据存储以提高性能和管理数据的大小。
  4. 配置文件

    • postgresql.conf:PostgreSQL的主要配置文件,包含了数据库服务器的配置参数。
    • pg_hba.conf:客户端认证文件,用于控制客户端的认证方式和权限。
    • pg_ident.conf:用户映射文件,用于基于操作系统用户认证的映射。
  5. 备份文件

    • 包括物理备份和逻辑备份文件,用于数据恢复和灾难恢复。
  6. 状态文件

    • postmaster.pid:记录当前PostgreSQL服务进程的进程ID。
    • recovery.conf:在恢复模式下使用的配置文件。
  7. 锁文件

    • postmaster.lock:用于指示数据库服务器是否正在运行。
  8. 临时文件

    • PostgreSQL在执行某些操作时会创建临时文件,这些文件通常在会话结束时删除。

这些文件共同构成了PostgreSQL数据库的文件系统,确保了数据库的正常运行和数据的安全。数据库管理员需要定期备份这些文件,并确保它们的安全性和完整性。

二、系统数据库

PostgreSQL中的系统数据库主要是指那些由PostgreSQL自身创建和管理的数据库,它们用于存储系统级别的数据和元信息。以下是PostgreSQL中的一些主要系统数据库:

  1. postgres

    • 这是一个默认的系统数据库,通常用于存储模板数据。在PostgreSQL安装后,这个数据库已经存在,并且通常被用作其他新数据库的模板。
  2. template1

    • 这是一个特殊的数据库,用作创建新数据库时的模板。它是template0的一个拷贝,并且可以被修改以包含特定的设置或扩展。
  3. template0

    • 这是一个受保护的模板数据库,用于防止被意外修改。它包含了PostgreSQL安装后的标准系统catalog和初始设置。

这些系统数据库在PostgreSQL中扮演着重要的角色:

  • postgres数据库通常用于日常操作和存储用户数据。
  • template1template0 数据库用于创建新的用户数据库时作为模板使用,其中template1 可以被修改以包含特定的设置或扩展,而template0则用于保持一个不可修改的标准模板。

系统数据库包含了PostgreSQL运行所需的所有系统表和元数据,它们对于数据库的正常运行至关重要。数据库管理员通常会利用这些系统数据库来创建新的用户数据库,或者在需要时对系统进行恢复和维护。

三、创建数据库

在PostgreSQL中,创建数据库是一个简单的过程,通常使用CREATE DATABASE语句。以下是创建数据库的基本步骤:

使用psql命令行工具

  1. 连接到PostgreSQL服务器。如果你还没有连接,可以使用以下命令:

    shell 复制代码
    psql -U username -d postgres

    这里username是你的PostgreSQL用户名,postgres是默认的数据库名。

  2. 创建一个新的数据库。使用以下SQL命令:

    sql 复制代码
    CREATE DATABASE database_name;

    其中database_name是你想要创建的数据库名称。

  3. 你也可以在创建数据库时指定模板和其他参数:

    sql 复制代码
    CREATE DATABASE database_name WITH TEMPLATE template_name ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C';

    这里template_name是用于创建新数据库的模板数据库名称,默认为template1

使用CREATE DATABASE的选项

  • TEMPLATE:指定模板数据库,新数据库将复制这个模板的内容。
  • ENCODING :设置数据库的字符编码,默认为UTF8
  • LC_COLLATE:设置数据库的校对(collation)规则,默认为系统环境的设置。
  • LC_CTYPE:设置数据库的字符分类(character classification)规则,默认为系统环境的设置。

使用PostgreSQL的图形界面工具

如果你使用的是如pgAdmin这样的图形界面工具,创建数据库的步骤通常如下:

  1. 打开pgAdmin并连接到你的PostgreSQL服务器。
  2. 在对象浏览器中,找到你想要创建数据库的服务器节点。
  3. 右键点击"Databases"并选择"Create" -> "Database"。
  4. 在弹出的对话框中输入新数据库的名称,并可以选择其他选项,如模板、编码等。
  5. 点击"Save"按钮完成数据库的创建。

创建数据库时,确保你有足够的权限。通常,你需要是数据库的超级用户或者具有创建数据库权限的用户。创建数据库是一个瞬间完成的操作,一旦执行,新数据库将立即可用。

四、数据库配置

新创建的数据库在PostgreSQL中继承了许多默认设置,这些设置来源于使用的模板数据库(通常是template1template0)。但是,你可能需要根据应用需求对新数据库进行一些配置。以下是一些常见的配置步骤:

连接到新数据库

首先,你需要连接到新创建的数据库。使用psql命令行工具连接:

shell 复制代码
psql -U username -d new_database_name

其中username是你的PostgreSQL用户名,new_database_name是你新创建的数据库名称。

设置搜索路径

搜索路径(search_path)决定了PostgreSQL在查询中查找表和其他数据库对象时的模式(schema)顺序。你可以设置搜索路径,使得查询时不需要指定完整的模式名。

sql 复制代码
SET search_path TO public, pg_catalog;

修改字符集和校对规则

如果你需要修改数据库的字符集或校对规则,可以使用以下命令:

sql 复制代码
ALTER DATABASE new_database_name SET NAMES 'UTF8';

设置默认的事务隔离级别

你可以设置数据库的默认事务隔离级别:

sql 复制代码
ALTER DATABASE new_database_name SET default_transaction_isolation TO 'read committed';

启用或禁用标准协程

PostgreSQL允许你启用或禁用标准协程(concurrency control):

sql 复制代码
ALTER DATABASE new_database_name SET default_transaction_read_only TO off;

设置WAL相关参数

如果你需要调整写前日志(WAL)的参数,可以在数据库级别进行设置:

sql 复制代码
ALTER DATABASE new_database_name SET wal_level TO 'replica';

配置角色和权限

你可以为新数据库创建角色(用户)并分配权限:

sql 复制代码
CREATE ROLE new_role WITH LOGIN PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE new_database_name TO new_role;

设置资源配额

对于需要资源配额的数据库,你可以设置角色可以使用的资源量:

sql 复制代码
ALTER ROLE new_role SET resource_pool TO 'primary';

配置其他参数

PostgreSQL提供了许多其他参数来控制数据库的行为,这些参数可以在postgresql.conf文件中设置,或者通过ALTER DATABASE命令设置。例如,你可以设置自动清理的参数:

sql 复制代码
ALTER DATABASE new_database_name SET autovacuum_vacuum_scale_factor TO 0.2;

请注意,某些参数只能在postgresql.conf文件中设置,并且需要数据库管理员权限。更改这些参数可能需要重启数据库服务器才能生效。

使用图形界面工具

如果你使用的是如pgAdmin这样的图形界面工具,你可以在连接到新数据库后,通过图形界面进行配置,例如设置角色权限、调整数据库参数等。

请记住,更改数据库配置可能会影响到数据库的性能和行为,因此在生产环境中进行更改之前应该进行充分的测试。

五、删除数据库

在pgAdmin中使用SQL语句删除数据库的步骤如下:

  1. 打开pgAdmin

    • 启动pgAdmin应用程序并连接到你的PostgreSQL服务器。
  2. 浏览到数据库

    • 在pgAdmin的浏览器面板中,找到你想要删除的数据库。通常,数据库会列在"数据库"节点下。
  3. 打开查询工具

    • 双击数据库名称,打开一个新的查询标签页,或者右键点击数据库名称,选择"Query Tool"(查询工具)。
  4. 编写SQL语句

    • 在查询工具的编辑器中,输入删除数据库的SQL语句:

      sql 复制代码
      DROP DATABASE database_name;

      database_name替换为你实际想要删除的数据库名称。

  5. 执行SQL语句

    • 执行SQL语句。你可以通过点击工具栏上的"执行"按钮(通常是一个红色的三角形图标)来执行SQL语句,或者使用快捷键Ctrl + .(在Windows/Linux上)或Cmd + .(在macOS上)。
  6. 确认删除

    • 如果系统提示确认,确认你想要删除数据库。删除操作将立即执行,数据库及其所有内容将被永久删除。
  7. 关闭查询工具

    • 删除操作完成后,你可以关闭查询工具,或者继续在同一个查询工具中执行其他SQL语句。

注意事项

  • 确保你有足够的权限来删除数据库。通常,你需要是数据库的所有者或超级用户。
  • 删除数据库前,请确保已经备份了所有重要数据,因为删除操作是不可逆的。
  • 如果数据库正在被使用,你可能需要先断开所有连接,或者使用FORCE选项(如果PostgreSQL版本支持)。

请谨慎操作,因为删除数据库将导致所有数据永久丢失。

六、查看数据库信息

在pgAdmin中查看数据库信息可以通过多种方式,以下是一些常用的方法:

1. 使用浏览器面板

  1. 打开pgAdmin

    • 启动pgAdmin应用程序并连接到你的PostgreSQL服务器。
  2. 浏览数据库列表

    • 在左侧的浏览器面板中,找到"Databases"(数据库)节点。展开该节点,你将看到所有可用的数据库列表。
  3. 查看数据库属性

    • 单击你想要查看的数据库名称,数据库的属性和基本信息将显示在主面板的"Properties"(属性)标签页中。

2. 使用查询工具

  1. 打开查询工具

    • 在浏览器面板中,右键点击你想要查看信息的数据库,选择"Query Tool"(查询工具)打开一个新的查询标签页。
  2. 执行SQL查询

    • 在查询工具中,你可以执行SQL查询来获取数据库的详细信息。例如,你可以查询数据库的大小:

      sql 复制代码
      SELECT pg_size_pretty(pg_database_size('database_name'));

      database_name替换为你的数据库名称。

  3. 查看查询结果

    • 执行上述查询后,结果将在查询工具的底部面板中显示。

3. 查看数据库统计信息

  1. 打开统计信息视图

    • 在浏览器面板中,展开你想要查看的数据库节点,然后展开"Statistics"(统计信息)节点。这里包含了数据库的各种统计信息,如表的行数、索引的使用情况等。
  2. 查看详细信息

    • 单击"Statistics"节点下的子节点,如"Table Statistics"(表统计信息)或"Index Statistics"(索引统计信息),可以查看具体的统计数据。

4. 查看数据库日志

  1. 打开日志视图

    • 在浏览器面板中,展开你想要查看的数据库节点,然后展开"Logs"(日志)节点。这里可以查看数据库的日志文件。
  2. 查看日志内容

    • 双击日志文件,可以在主面板中查看日志的详细内容。

5. 使用"Tools"菜单

  1. 备份数据库

    • 在浏览器面板中,右键点击数据库,选择"Tools"(工具)> "Backup"(备份)。这将创建数据库的备份,同时你也可以在备份过程中查看数据库的结构和内容。
  2. 还原数据库

    • 类似地,你可以通过"Tools" > "Restore"(还原)来还原数据库,这同样可以让你查看数据库的结构和内容。

通过这些方法,你可以在pgAdmin中查看数据库的详细信息,包括属性、统计信息、日志等。这些信息对于数据库的监控、维护和故障排除非常有用。

相关推荐
未来之窗软件服务6 分钟前
JAVASCRIPT 前端数据库-V1--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟数据库
LjQ204014 分钟前
网络爬虫一课一得
开发语言·数据库·python·网络爬虫
烙印60118 分钟前
MyBatis原理剖析(二)
java·数据库·mybatis
RestCloud20 分钟前
如何通过ETLCloud实现跨系统数据同步?
数据库·数据仓库·mysql·etl·数据处理·数据同步·集成平台
你是狒狒吗21 分钟前
TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
java·开发语言·数据库
Channing Lewis2 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠2 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT2 小时前
每日八股文6.3
数据库·sql
行云流水行云流水2 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song2 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法