[Introducción básica a postgresql] Desde comprender los permisos de acceso a la base de datos, acceder a la base de datos hasta comprender el propietario y los atributos de la base de datos, esto abre la puerta al uso de la base de datos.

Operaciones de base de datos

Contenido de la columna :

Contribuciones de código abierto :

Página de inicio personal : Mi página de inicio
Comunidad de gestión : Base de datos de código abierto
Lema: Cuando el cielo es fuerte, un caballero se esfuerza por superarse; cuando el terreno es bueno, un caballero porta grandes virtudes.

Serie de artículos

Prefacio

La base de datos postgresql es un dato relacional general que es comparable a los datos comerciales en bases de datos de código abierto y se está volviendo cada vez más popular en la industria.

Debido a que es una base de datos de código abierto, no solo divulga el código fuente, sino que también tiene muchos casos de uso y complementos fáciles de usar, por lo que gradualmente se ha convertido en el pionero y estándar de las bases de datos. entenderlo desde el uso hasta los principios;

Si está aprendiendo programación, también puede adquirir una gran cantidad de conocimientos de programación, estructuras de datos y habilidades de programación. También hay muchos diseños arquitectónicos exquisitos, ideas en capas e ideas que se pueden personalizar de manera flexible.

Esta columna presenta principalmente el uso básico de postgresql, el mantenimiento y la administración de bases de datos. A través de estos usos, puede comprender los principios de la base de datos y comprender lentamente qué tipo de base de datos es postgresql, qué puede hacer y cómo proporcionar una buena servicios. Lo más importante es que este conocimiento esté todo en la entrevista. Elementos requeridos.

Descripción general

Este artículo comparte principalmente la base de datos, la unidad de gestión más básica del sistema de base de datos, y su serie de operaciones de gestión, principalmente desde los siguientes aspectos:

  • Consultar todas las bases de datos.
  • Ingrese la base de datos especificada
  • Crear base de datos
  • Modificar base de datos
  • Eliminar base de datos
  • Ver estadísticas de la base de datos

Ver todas las bases de datos

Al realizar el mantenimiento como DBA, necesitamos saber cuántas bases de datos hay en el clúster actual, los siguientes métodos se utilizan comúnmente para verlas;

  • Consultar diccionario de datos vía SQL
  • Ver la lista de resumen de la base de datos mediante el comando psql

Ver diccionario de datos a través de SQL

En el sistema de base de datos, toda la información organizativa de los datos se denomina colectivamente diccionario de datos. La forma lógica presentada por el diccionario de datos es una serie de tablas. Debido a que el sistema de base de datos la genera y mantiene automáticamente, también se le llama diccionario. tabla del sistema.

La información sobre la base de datos también se registra en una tabla del sistema, pg_databaseprimero echemos un vistazo a los campos de su tabla;

postgres=# \d pg_database
               Table "pg_catalog.pg_database"
     Column     |   Type    | Collation | Nullable | Default
----------------+-----------+-----------+----------+---------
 oid            | oid       |           | not null |
 datname        | name      |           | not null |
 datdba         | oid       |           | not null |
 encoding       | integer   |           | not null |
 datlocprovider | "char"    |           | not null |
 datistemplate  | boolean   |           | not null |
 datallowconn   | boolean   |           | not null |
 datconnlimit   | integer   |           | not null |
 datfrozenxid   | xid       |           | not null |
 datminmxid     | xid       |           | not null |
 dattablespace  | oid       |           | not null |
 datcollate     | text      | C         | not null |
 datctype       | text      | C         | not null |
 daticulocale   | text      | C         |          |
 daticurules    | text      | C         |          |
 datcollversion | text      | C         |          |
 datacl         | aclitem[] |           |          |
Indexes:
    "pg_database_oid_index" PRIMARY KEY, btree (oid), tablespace "pg_global"
    "pg_database_datname_index" UNIQUE CONSTRAINT, btree (datname), tablespace "pg_global"
Tablespace: "pg_global"

El significado de cada campo se explica a continuación:

Nombre del campo describir
oid El identificador único de la base de datos, que el sistema utiliza internamente;
datname El nombre de la base de datos;
datdba El OID de usuario (identificador de objeto) del propietario de la base de datos;
encoding La codificación de caracteres utilizada por la base de datos;
datlocprovider Proveedor de configuración regional para esta base de datos: =libc, =icuci;
datistemplate Esta es una bandera que indica si la base de datos es una plantilla. Si es verdadero, cualquier usuario con permiso puede clonar esta base de datos; si es falso, solo el superusuario o el propietario de la base de datos puede clonarla.
datallowconn Si es falso, nadie podrá conectarse a esta base de datos. Esto se utiliza para proteger la base de datos de cambios.
datconnlimit Este es el límite actual en la cantidad de conexiones abiertas a la base de datos. -1 significa que no hay límite, -2 significa que la base de datos no es válida.
datfrozenxid Todos los ID de transacciones en esta base de datos mayores que este valor han sido reemplazados por ID de transacciones congeladas, un mecanismo de reciclaje para números de transacciones;
datminmxid Todos los ID multixactos en esta base de datos que son mayores que el valor cotizado han sido reemplazados por ID de transacciones, un mecanismo de reciclaje para números de transacciones;
dattablespace El OID (identificador de objeto) del espacio de tabla utilizado por la base de datos.
datcollate LC_COLLATE para esta base de datos;
datctype LC_CTYPE de esta base de datos;
daticulocale El ID local de la UCI de esta base de datos;
daticurules Cotejo de la UCI para esta base de datos;
datcollversion Versión de clasificación específica del proveedor. Esto se registra cuando se crea la base de datos y luego se verifica cuando se utiliza la base de datos para detectar cambios en la definición de intercalación que pueden causar corrupción de datos.
datacl permiso de acceso;

Concéntrese en comprender algunos campos. Cada objeto de base de datos dentro del sistema tiene un OID de identificación único, que es un número, correspondiente a un espacio de tabla, que es el nivel de almacenamiento; también existen restricciones en los derechos de acceso y no todos pueden acceder a ellos. a voluntad,
especialmente Sí, necesitamos saber quién es el propietario de la base de datos, es decir, el campo datdba, porque es el jefe de esta base de datos;

Bien, después de entenderlo, es muy simple, podemos saber cuántas bases de datos tiene el sistema de base de datos actual mediante una consulta;

db_factory=> select oid,datname,datdba,dattablespace , datacl from pg_database ;
  oid  |   datname   | datdba | dattablespace |                     datacl
-------+-------------+--------+---------------+------------------------------------------------
     5 | postgres    |     10 |          1663 |
     1 | template1   |     10 |          1663 | {
   
   =c/senllang,senllang=CTc/senllang}
     4 | template0   |     10 |          1663 | {
   
   =c/senllang,senllang=CTc/senllang}
 16446 | db_factory1 |     10 |          1663 |
 16445 | db_factory  |  16451 |          1663 | {
   
   =Tc/manager,manager=CTc/manager,hr=C/manager}
(5 rows)

Acabamos de hablar de los permisos de acceso, en cuanto a los permisos de acceso a las tablas del sistema, por ser diccionarios, todos los usuarios tienen permisos por defecto;

psql ver lista de bases de datos

psql es un cliente de línea de comandos de uso común. Proporciona muchos comandos de operación simples, como ver la lista de bases de datos. Se ha \lusado muchas veces en intercambios anteriores;

db_factory=> \l
                                                        List of databases
    Name     |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges
-------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------
 db_factory  | manager  | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           | =Tc/manager          +
             |          |          |                 |             |             |            |           | manager=CTc/manager  +
             |          |          |                 |             |             |            |           | hr=C/manager
 db_factory1 | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           |
 postgres    | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           |
 template0   | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           | =c/senllang          +
             |          |          |                 |             |             |            |           | senllang=CTc/senllang
 template1   | senllang | UTF8     | icu             | en_US.UTF-8 | en_US.UTF-8 | en-US      |           | =c/senllang          +
             |          |          |                 |             |             |            |           | senllang=CTc/senllang
(5 rows)

Puede ver los resultados de la ejecución. El número es el mismo, pero la información es pg_databasemenor que la que encontró. Proporciona principalmente información resumida. Si necesita información detallada, aún debe verificarla en la tabla del sistema.

Ingrese la base de datos especificada

Cada vez que inicia sesión, debe especificar una base de datos; por supuesto, el método de inicio de sesión puede ser un cliente gráfico, una conexión JDBC o psql; por ejemplo, para
ingresar a la base de datos a través de psql db_factory, el usuario es hr;

[senllang@hatch bin]$ ./psql -d db_factory  -U hr
psql (16beta1)
Type "help" for help.

db_factory=>

Crear base de datos

CREATE DATABASE db_factory;

Los pasos y aspectos detallados de la creación de una base de datos se han compartido antes y no se repetirán aquí. Consulte el contenido de esta columna;

Modificar base de datos

Pocas personas modifican las propiedades de la base de datos, porque la base de datos generalmente se planifica con anticipación y el impacto es relativamente grande. Pero como DBA, debe comprender qué atributos se pueden modificar y cuál será el impacto de la modificación.

La base de datos se puede modificar en los siguientes tipos principales:

  • Modificar las propiedades de la base de datos;
  • Modificar el nombre de la base de datos;
  • Modificar el espacio de la tabla de la base de datos;
  • Modificar el propietario de la base de datos;
  • Parámetros de tiempo de ejecución de la base de datos

Por supuesto, al realizar estas operaciones, el usuario actual de la base de datos es el usuario o propietario superadministrador;

Modificación de propiedades de la base de datos

Se pueden modificar los siguientes valores en las propiedades de la base de datos.

  • ALLOW_CONNECTIONS propiedades de conexión;
  • LÍMITE DE CONEXIÓN límite de número de conexión;
  • Atributos de plantilla IS_TEMPLATE
    Estos parámetros son pg_databaselos contenidos enumerados en las tablas del sistema y afectan el acceso a la base de datos;

Modificación del nombre de la base de datos

Cambio de nombre de base de datos

postgres=# \c postgres manager
You are now connected to database "postgres" as user "manager".
postgres=> alter database db_factory rename to db_factory2;
ALTER DATABASE

managerEl usuario tiene createdbpermisos y también es db_factoryel propietario; el nombre de la base de datos de inicio de sesión actual no se puede modificar, por lo que iniciamos sesión en otras bases de datos y luego ejecutamos la instrucción SQL de cambio de nombre.

Cambios en el espacio de tablas al que pertenece la base de datos.

Al compartir espacio de almacenamiento, se menciona que el espacio de tabla es en realidad la ubicación de almacenamiento físico de la base de datos; luego, cambiar el espacio de tabla también significa mover la base de datos, lo que suena problemático.

También hay muy pocos escenarios de aplicación para este comando. Solo cuando el espacio de almacenamiento del espacio de tabla actual es insuficiente o cuando el disco correspondiente al espacio de tabla actual necesita mantenimiento, la base de datos debe moverse a una nueva ubicación. Los datos en la base de datos son críticos, la copia de seguridad y el archivado deben realizarse con anticipación.

En primer lugar, el usuario que realiza la modificación debe tener permiso para usar el espacio de tabla correspondiente. Todavía usamos manageroperaciones de usuario para otorgarle al usuario todos los permisos managersobre el espacio de tabla .tblspc_test1

postgres=# grant all ON tablespace tblspc_test1 TO manager ;
GRANT

Cambie a iniciar sesión como managerusuario y cambie db_factory2el espacio de tabla, que originalmente estaba en el espacio de tabla predeterminado;

postgres=# \c postgres manager
You are now connected to database "postgres" as user "manager".
postgres=> alter database db_factory2 set tablespace tblspc_test1 ;
ALTER DATABASE

Cambio de propietario de la base de datos

El propietario es el propietario de todos los permisos de esta base de datos. Después del reemplazo, el usuario propietario original perderá los permisos;

Antes de que se pueda ejecutar, el ejecutor puede ser un superadministrador, o el usuario propietario actual y un miembro del nuevo usuario propietario, de lo contrario no se puede ejecutar, es decir, el nuevo propietario y el antiguo propietario serán efectivo después de la ejecución. Los mismos permisos; si el antiguo usuario propietario no es necesario, él o ella puede ser expulsado de la membresía; esta restricción garantiza un proceso de cambio sin problemas;

Supongamos que desea cambiar db_factory2el propietario a usuario;managervp

  • Primero cree un nuevo usuario como superadministrador vpy otorgue createdbpermisos;
postgres=# create user vp createdb password '123456';
CREATE ROLE
  • será managermiembro del nuevo usuario
postgres=# grant manager to vp;
GRANT ROLE
  • Luego managerinicie sesión en la base de datos con el usuario db_factory2y cambie de propietario.
postgres=# \c db_factory2 manager
You are now connected to database "db_factory2" as user "manager".
db_factory2=> alter database db_factory2 owner to vp;
ALTER DATABASE

Modificación de parámetros de tiempo de ejecución

Hay muchos parámetros en la base de datos, puede consultar el archivo de configuración para obtener más detalles.

db_factory2Por ejemplo, para deshabilitar el escaneo de índices en la base de datos , puede ejecutar el siguiente SQL

ALTER DATABASE db_factory2 SET enable_indexscan TO off;

Eliminar base de datos

Cuando no necesitemos una base de datos, podemos eliminarla para liberar el espacio en disco correspondiente y evitar que el servicio de base de datos en segundo plano escanee constantemente bases de datos abandonadas y realice tareas de mantenimiento;

Para eliminar la base de datos, dropdbpuede utilizar comandos o declaraciones SQL;

Comando para eliminar base de datos

En el directorio bin debajo del directorio de instalación, puede ver dropdbel comando. Vea la ayuda de la siguiente manera:

[senllang@hatch bin]$ ./dropdb --help
dropdb removes a PostgreSQL database.

Usage:
  dropdb [OPTION]... DBNAME

Options:
  -e, --echo                show the commands being sent to the server
  -f, --force               try to terminate other connections before dropping
  -i, --interactive         prompt before deleting anything
  -V, --version             output version information, then exit
  --if-exists               don't report error if database doesn't exist
  -?, --help                show this help, then exit

Connection options:
  -h, --host=HOSTNAME       database server host or socket directory
  -p, --port=PORT           database server port
  -U, --username=USERNAME   user name to connect as
  -w, --no-password         never prompt for password
  -W, --password            force password prompt
  --maintenance-db=DBNAME   alternate maintenance database

Report bugs to <[email protected]>.
PostgreSQL home page: <https://www.postgresql.org/>

Como puede ver, de forma predeterminada, el parámetro es el nombre de la base de datos.

Esta es también la forma recomendada de eliminar una base de datos sin iniciar sesión en ella;

SQL eliminar base de datos

postgresql también proporciona el modo SQL, que no está incluido en el estándar SQL;

DROP DATABASE db_factory2;

Por supuesto, esto lo realiza el administrador y el propietario, cuando hay una conexión a la base de datos, la ejecución fallará;

  • Tenga en cuenta que la eliminación de la base de datos no se puede deshacer, así que tenga cuidado;

Ver estadísticas de la base de datos

Por supuesto, durante el mantenimiento, también podemos verificar algunos indicadores en la base de datos, es decir, información estadística, para medir el estado de la base de datos;

Esta información está en pg_stat_databaseesta tabla del sistema.

postgres=# select * from pg_stat_database where datname='db_factory2';
 datid |   datname   | numbackends | xact_commit | xact_rollback | blks_read | blks_hit | tup_returned | tup_fetched | tup_inserted | tup_updated | tup_deleted | conflicts | temp_files | temp_bytes | deadlocks | che
cksum_failures | checksum_last_failure | blk_read_time | blk_write_time | session_time | active_time | idle_in_transaction_time | sessions | sessions_abandoned | sessions_fatal | sessions_killed | stats_reset
-------+-------------+-------------+-------------+---------------+-----------+----------+--------------+-------------+--------------+-------------+-------------+-----------+------------+------------+-----------+----
---------------+-----------------------+---------------+----------------+--------------+-------------+--------------------------+----------+--------------------+----------------+-----------------+-------------
 16445 | db_factory2 |           0 |        6339 |            19 |       218 |   244990 |      2750338 |       52930 |          134 |          12 |          94 |         0 |          0 |          0 |         0 |
               |                       |             0 |              0 | 56623309.239 |     253.288 |                        0 |       29 |                  0 |              0 |               0 |
(1 row)

El prefijo es la tabla del sistema pg_stat_, que es un tipo de tabla de registro de información estadística. Puede ver algunas estadísticas del estado de ejecución, como la cantidad de conexiones en las estadísticas de la base de datos, la cantidad de confirmaciones y reversiones de transacciones, etc. Esta información se presentará en detalle cuando se utilice más adelante.

Resumir

Espero que al compartir este artículo pueda tener una mejor comprensión de la base de datos. En cuanto al ID Diyi de la base de datos en el sistema y los permisos del propietario, tiene todos los permisos de la base de datos. Al mismo tiempo, cada base de datos está en el ubicación de almacenamiento, correspondiente a la tabla Espacio, esta información se puede conocer en detalle iniciando sesión, consultando el diccionario del sistema de la base de datos y la información estadística.

fin

Muchas gracias por tu apoyo. No olvides dejar tus valiosos comentarios mientras navegas. Si crees que es digno de aliento, dale me gusta y guárdalo. ¡Trabajaré más duro!

Correo electrónico del autor: [email protected]
Si hay algún error u omisión, indíquelo y aprenda unos de otros.

Nota: ¡No se permite la reproducción sin permiso!

Supongo que te gusta

Origin blog.csdn.net/senllang/article/details/132776363
Recomendado
Clasificación