PostgreSQL Idx
Resumo
- Cria ou remove índices em um banco de dados PostgreSQL
Parâmetros
Parâmetro | Tipo | Escolhas | Valor padrão | Comentários |
|---|---|---|---|
cascade | boolean | Escolhas:
| Remove automaticamente os objetos que dependem do índice e, por sua vez, todos os objetos que dependem desses objetos. É usado apenas com state=absent. Mutuamente exclusivo com concurrent=yes. |
columns | list | | Lista de colunas de índice que precisam ser cobertas pelo índice. Mutuamente exclusivo com state=absent. |
concurrent | boolean | Escolhas:
| Habilita ou desabilita o modo concorrente (CREATE / DROP INDEX CONCURRENTLY). Preste atenção, se concurrent=no, a tabela será travada (ACCESS EXCLUSIVE) durante o processo de construção. Para obter mais informações sobre os níveis de bloqueio, consulte https://www.postgresql.org/docs/current/explicit-locking.html. Se o processo de construção foi interrompido por qualquer motivo quando concurrent=yes, o índice se torna inválido. Nesse caso, ele deve ser eliminado e criado novamente. Mutuamente exclusivo com cascade=yes. |
cond | string | | Condições do índice. Mutuamente exclusivo com state=absent. |
db | string | | Nome do banco de dados ao qual se conectar e onde o índice será criado/eliminado. aliases: login_db |
idxname | string | | Nome do índice a ser criado ou eliminado. aliases: name |
idxtype | string | | Tipo de índice (como btree, gist, gin, etc.). Mutuamente exclusivo com state=absent. aliases: type |
schema | string | | Nome de um schema de banco de dados onde o índice será criado. |
session_role | string | | Mude para session_role após conectar. O session_role especificado deve ser uma função da qual o login_user atual é membro. A verificação de permissões para comandos SQL é realizada como se o session_role fosse aquele que havia efetuado login originalmente. |
state | string | Escolhas:
| present implica que o índice será criado se não existir absent implica que o índice será eliminado, se existir. |
storage_params | list | | Parâmetros de armazenamento como fillfactor, vacuum_cleanup_index_scale_factor, etc. Mutuamente exclusivo com state=absent. |
table | string | | Tabela para criar índice nela. Mutuamente exclusivo com state=absent. |
tablespace | string | | Define um tablespace para o índice. Mutuamente exclusivo com state=absent. |
trust_input | boolean | Escolhas:
| Caso use 'no', verifica se os valores dos parâmetros idxname, session_role, schema, tabela, colunas, tablespace, storage_params, cond são potencialmente perigosos. Faz sentido usar no apenas quando as injeções de SQL através dos parâmetros são possíveis. |
unique | boolean | Escolhas:
| Habilitar índice exclusivo. Apenas btree atualmente oferece suporte a índices exclusivos |
Extende fragmentos da documentação do módulo PostgreSQL Base
Notas
- O processo de construção do índice pode afetar o desempenho do banco de dados.
- Para evitar bloqueios de tabela em bancos de dados de produção, use concurrent=yes (comportamento padrão).
- A autenticação padrão assume que você está fazendo login ou sudo na conta do postgres no host..
- Para evitar o erro “Peer authentication failed for user postgres”, use o usuário postgres como um become_user.
- Se o host remoto for o servidor PostgreSQL (que é o caso padrão), o PostgreSQL também deve ser instalado no host remoto.
- The ca_cert parameter requires at least Postgres version 8.4.
Exemplos
- name: Cria o índice btree se não existir test_idx cobrindo simultaneamente o id das colunas e o nome dos produtos da tabela
postgresql_idx:
db: acme
table: products
columns: id,name
name: test_idx
- name: Cria o índice btree test_idx simultaneamente com o espaço de tabela chamado ssd e parâmetro de armazenamento
postgresql_idx:
db: acme
table: products
columns:
- id
- name
idxname: test_idx
tablespace: ssd
storage_params:
- fillfactor=90
- name: Cria o índice essencial test_gist_idx simultaneamente na coluna geo_data do mapa da tabela
postgresql_idx:
db: somedb
table: map
idxtype: gist
columns: geo_data
idxname: test_gist_idx
# Nota: para o exemplo abaixo, a extensão pg_trgm deve ser instalada para gin_trgm_ops
- name: Criar índice gin gin0_idx não simultaneamente no comentário da coluna do teste da tabela
postgresql_idx:
idxname: gin0_idx
table: test
columns: comment gin_trgm_ops
concurrent: no
idxtype: gin
- name: Elimina btree test_idx simultaneamente
postgresql_idx:
db: mydb
idxname: test_idx
state: absent
- name: Elimina test_idx em cascata
postgresql_idx:
db: mydb
idxname: test_idx
state: absent
cascade: yes
concurrent: no
- name: Cria o índice btree test_idx simultaneamente no id das colunas, comentário onde id da coluna > 1
postgresql_idx:
db: mydb
table: test
columns: id,comment
idxname: test_idx
cond: id > 1
- name: Cria um índice btree exclusivo se não existir test_unique_idx no nome da coluna de produtos de tabela
postgresql_idx:
db: acme
table: products
columns: name
name: test_unique_idx
unique: yes
concurrent: no
Valores retornados
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
name | string | sempre | Nome do índice. Exemplo: foo_idx |
query | string | sempre | Consulta que tentou ser executada. Exemplo: CREATE INDEX CONCURRENTLY foo_idx ON test_table USING BTREE (id) |
schema | string | sempre | Schema onde o índice existe. Exemplo: public |
state | string | sempre | Estado do índice. Exemplo: present |
storage_params | list | sempre | Parametros de armazenamento do índice. Exemplo: ['fillfactor=90'] |
tablespace | string | sempre | Tablespace onde o índice existe. Exemplo: ssd |
valid | boolean | sempre | Validade do índice. Exemplo: True |