8-管理数据库

2025-01-19 14:09

数据库是模式的集合,模式包含表,函数等。

层次结构: 服务器,数据库,模式,表(或某些其他类型的对象,例如函数).

列出现有的数据库: SELECT datname FROM pg_database; 或者: \l.

创建数据库

  • create database name;

    • initdb初始化数据存储区时,默认创建的第一个数据库是postgres.

  • 第二个数据库template1,也是在数据库集群初始化期间创建。

    • 每当在集群中创建新数据库时,都是从template1克隆的。所做的任何更改都会从template1传播到所有后续创建的数据库。

    • 为其他人创建数据库,可配置和管理: CREATE DATABASE dbname OWNER rolename;

模板数据库

  • 标准系统数据库template1.制作新数据库的"模板".

  • template1包含特定于编码或特定于语言环境的数据.

    第二个标准系统数据库template0,包含与初始内容相同的数据template1.即只有PostgreSQL版本预定义的标准对象.template0数据库群集初始化后,永远不应该更改。通过指示CREATE DATABASE复制template0,可以创建一个“ 原始 ”用户数据库.

  • 通过复制创建数据库template0:

CREATE DATABASE dbnameTEMPLATE template0;
createdb -T template0 dbname

数据库配置

  • 设置特定于数据库的默认值

例如:为给定数据库禁用 GEQO优化器:
ALTER DATABASE mydb SET geqo TO off;
  • 撤销特定于数据库的默认值:

ALTER DATABASE dbname RESET varname;

删除数据库

  • 删除数据库将删除数据库中包含的所有对象

drop database name;

表空间

PostgreSQL中的表空间允许数据库管理员在文件系统中定义可以存储表示数据库对象的文件的位置。创建后,可以在创建数据库对象时按名称引用表空间。

  • 表空间允许管理员使用数据库对象的使用模式的知识来优化性能.

  • 表空间也是数据库集群的组成部分.

  • 创建表空间:

CREATE TABLESPACE fastspace LOCATION '/ssd1/postgresql/data';

在表空间中创建的所有对象都将存储在此目录下的文件中.

  • 删除空的表空间:

drop tablespace tablespacename;

可以将表,索引和整个数据库分配给特定的表空间.具有CREATE给定表空间特权的用户必须将表空间名称作为参数传递给相关命令.

CREATE TABLE foo(i int)TABLESPACE space1;
或者:
SET default_tablespace = space1; 
CREATE TABLE foo(i int);

temp_tablespaces参数,用于确定临时表和索引的位置,用于排序大型数据集等目的的临时文件.

与数据库关联的表空间用于存储该数据库的系统目录。此外,它是用于在数据库中创建的表,索引和临时文件的缺省表空间.

初始化数据库集群时会自动创建两个表空间。该pg_global表被用于共享系统目录。该pg_default表是默认表空间template1和template0数据库.

  • 查看现有的表空间: SELECT spcname FROM pg_tablespace; 或者\db命令查看。

编码

  • LC_COLLATE 字符串排序顺序

  • LC_CTYPE 字符分类(什么是字母?它的大写字母等价?)

  • LC_MESSAGES 消息的语言

  • LC_MONETARY 格式化货币金额

  • LC_NUMERIC 格式化数字

  • LC_TIME 格式化日期和时间

  • 检查系统上安装的语言环境: locale -a命令查看。

  • 检查当前可用的语言环境,使用查询SELECT * FROM pg_collation 或者\dOS+

字符集支持

  • 设置默认字符集(编码): initdb -E UTF-8

  • 数据库的编码存储在系统目录中pg_database或\l查看。或者: SELECT * FROM pg_database;

服务器和客户端之间的自动字符集转换,转换信息存储在pg_conversion系统目录中。

  • 查看转换信息: select * from pg_conversion;

  • 启用自动字符集转换,更改客户端编码: \encoding utf-8;

  • 设置客户端编码: SET CLIENT_ENCODING TO' value';

  • 查看当前客户端编码: SHOW client_encoding;

  • 重置为默认编码 : RESET client_encoding;

相关文章
热点文章
精彩视频
Tags

在线访客: 今日访问量: 昨日访问量: 总访问量:

×
请扫码支付

扫码支付后自动跳转查看