AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

All perguntas(dba)

Martin Hope
Rémi Pradal
Asked: 2024-05-06 16:19:44 +0800 CST

Verificação de restrição de chave estrangeira para tabelas particionadas

  • 5

Estou tentando encontrar a melhor maneira de gerenciar tabelas particionadas do postgresql. Tenho duas tabelas particionadas (uma partição por dia, com base na coluna created_atexistente em ambas as tabelas) fridge_tagreadinge fridge_tagantennareading. fridge_tagantennareadingreferências fridge_tagreadingatravés de uma chave estrangeira composta (tag_reading_id, created_at).

Regularmente quero remover partições antigas. Para isso, minha ideia era fazer o seguinte (exemplo se para remoção de dados datados de 03/05/2024):

alter table fridge_tagantennareading detach partition fridge_tagantennareading_2024_may_03;
drop table fridge_tagantennareading_2024_may_03;


alter table fridge_tagreading detach partition fridge_tagreading_2024_may_03;
drop table fridge_tagreading_2024_may_03;

As duas primeiras consultas funcionam perfeitamente. No entanto, ao executar o terceiro, acertei meu statement_timeout(atualmente definido como 10s). Parece que a consulta que verifica a violação de fk na tabela referenciada leva muito tempo:

select fk."tag_reading_id", fk."created_at"
from "public"."fridge_tagantennareading" fk
join
    "public"."fridge_tagreading_2024_may_03" pk
    on (
        pk."id" operator(pg_catalog. =) fk."tag_reading_id"
        and pk."created_at" operator(pg_catalog. =) fk."created_at"
    )
where
    (
        (pk.created_at is not null)
        and (pk.created_at >= '2024-05-03 00:00:00+00'::timestamp with time zone)
        and (pk.created_at < '2024-05-04 00:00:00+00'::timestamp with time zone)
    )
    and (fk."tag_reading_id" is not null and fk."created_at" is not null)
;

Meu entendimento é que essa consulta leva muito tempo porque o postgres verifica todas as partições na tabela referenciada. Estou surpreso que o postgres não "propague restrições", o que levaria a uma consulta apenas na partição boa da tabela referenciada (isso seria muito rápido).

É uma limitação conhecida? Como você lidaria com tal situação? Minha única solução até agora parece eliminar a restrição de chave estrangeira...

Obrigado

postgresql
  • 1 respostas
  • 21 Views
Martin Hope
Manngo
Asked: 2024-05-06 14:41:45 +0800 CST

Usando pgdump_all e cron

  • 4

Eu tenho um cron job diário para despejar meu banco de dados. Parte do crontab inclui o seguinte:

01   01 *   *   *   root    /etc/cron.d/backupDaily.sh

e parte do script de backup contém o seguinte:

cd /data/pgsql/
sudo -u postgres /usr/pgsql-12/bin/pg_dumpall>/data/pgsql/pg.sql

Minhas anotações antigas referem-se a colocar as credenciais em um arquivo como /.pgpass. No entanto, atualizei meu servidor algumas vezes desde o início e parece que não tenho mais esse arquivo.

Alguém pode me dizer como posso escapar disso? Isso sugere que meu postgresusuário não tem uma senha?

Aqui está o que está no meu pg_hba.confarquivo:

#   TYPE    DATABASE        USER    ADDRESS         METHOD
    local   replication     all                     peer
    host    replication     all     127.0.0.1/32    ident
    host    replication     all     ::1/128         ident

    local   all             all                     trust

#   IPv4 local connections:
    host    all             all     127.0.0.1/32    trust
    host    all             all     192.168.0.0/24  trust
    host    all             all     192.168.1.0/24  trust
    host    all             all     192.168.77.0/24 trust
postgresql
  • 2 respostas
  • 28 Views
Martin Hope
Cyril Mikhalchenko
Asked: 2024-05-04 23:28:17 +0800 CST

Como gerar uma matriz de números definida pelo usuário em um determinado intervalo um certo número de vezes

  • 5

Preciso gerar números inteiros definidos pelo usuário como um conjunto de números não ordenados necessário para um determinado intervalo, por exemplo, (10) um certo número de vezes, por exemplo, 3 em uma coluna de uma tabela.

A quantidade e repetição de dígitos podem ser diferentes e podem ser definidas pelo usuário a seu critério.

Por exemplo, o resultado desejado de cima para baixo deve ser assim:

0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2. 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2. 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2. 1, 0.

Talvez, usando a função

SELECT n
 FROM generate_series(ARRAY[0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2. 1, 0], 3) n

ou algo semelhante?

postgresql
  • 1 respostas
  • 52 Views
Martin Hope
J. Mini
Asked: 2024-05-04 06:44:15 +0800 CST

Por que o nível de isolamento da transação SERIALIZABLE não garante visualizações de dados pontuais?

  • 7

Disseram-me que se sua transação consistir em múltiplas instruções, então o SNAPSHOTnível de isolamento da transação é a única maneira de garantir visualizações de dados consistentes em um determinado momento. Por que o nível de isolamento da transação é SERIALIZABLEinadequado para esta tarefa? Por design, as travas que SERIALIZABLEprendem são muito apertadas.

Acho que a lacuna no meu entendimento é que não tenho certeza de quando SERIALIZABLEisso acontece. Um script como o abaixo provavelmente será muito útil para encontrar o que estou perdendo.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN TRANSACTION;

SELECT TOP (1) * FROM [Hit_Me_First];

WAITFOR DELAY '00:02:00';  

SELECT TOP (1) * FROM [Hit_Me_Second];

COMMIT;
sql-server
  • 2 respostas
  • 260 Views
Martin Hope
toydarian
Asked: 2024-05-03 16:03:24 +0800 CST

Por que o PostgreSQL aceita conexões durante a recuperação?

  • 6

Por que o PostgreSQL aceita conexões durante a recuperação?
Eu queria usar ps_isreadypara determinar se meu banco de dados foi recuperado de um backup e está pronto para aceitar conexões. Mas diz que o banco de dados está pronto muito antes de a recuperação ser realmente concluída.
Agora verifico se o recovery.signalarquivo existe, mas me pergunto se existe uma maneira "melhor" de determinar se a recuperação foi concluída.

postgresql
  • 1 respostas
  • 17 Views
Martin Hope
Mohammad Mosiur
Asked: 2024-05-03 14:47:01 +0800 CST

Obtenha o stats_stream no servidor SQL usando SSMS

  • 5

Gerei estatísticas para algumas colunas de uma tabela usando o seguinte comando SQL:

CREATE STATISTICS [STAT_NAME] on [TABLE_NAME] (COLUMN_NAME) WITH FULLSCAN

As estatísticas geradas são mostradas na pasta de estatísticas da tabela.

Agora quero ler o STATS_STREAM das minhas estatísticas geradas. Para que eu possa reutilizar essa estatística da seguinte maneira:

CREATE STATISTICS [STAT_NAME] on [TABLE_NAME] (COLUMN_NAME) WITH STATS_STREAM = 0x<Hexadecimal number>

Como posso fazer isso? Existe algum comando ou opção de UI do SSMS que possa fazer isso?

sql-server
  • 1 respostas
  • 36 Views
Martin Hope
kls
Asked: 2024-05-02 20:09:19 +0800 CST

Não é possível conectar-se ao SQL Server usando a autenticação do Windows - "O nome principal de destino está incorreto. Não é possível gerar o contexto SSPI"

  • 5
Esta questão foi migrada do Stack Overflow porque pode ser respondida no Stack Exchange dos Administradores de Banco de Dados. Migraram ontem .

Estou conectado à máquina Windows e conectado a outro ambiente por meio do GlobalProtect VPN para conectar o SQL Server. O SQL Server está configurado para permitir apenas a autenticação do Windows. Porém, a máquina Windows está em um domínio e o SQL Server está em outro domínio. E quando estou tentando conectar, ocorre um erro:

O nome principal de destino está incorreto. Não é possível gerar o contexto SSPI.
(Provedor de dados da estrutura Microsoft SqlClient)

É assim que estou tentando conseguir isso:

insira a descrição da imagem aqui

Mas está retornando erro como:

insira a descrição da imagem aqui

Aqui estão os detalhes:

insira a descrição da imagem aqui

sql-server
  • 1 respostas
  • 15 Views
Martin Hope
Mr. Berzerk
Asked: 2024-05-03 05:59:40 +0800 CST

Nós SQL e de gerenciamento no mesmo servidor no cluster NDB. Nós SQL não conectando

  • 5

Configurei um cluster ndb com 7 nós. 3 nós de dados em seus próprios servidores e 2 nós de gerenciamento, cada um com um nó sql em 2 servidores. Eu reduzi o que acho que é o meu problema. Meu cluster parece não conseguir eleger um nó de dados presidente, mas não tenho ideia de como definir as regras eleitorais. Alguém pode me ajudar com minha configuração? Minha configuração está errada? Obrigado. Abaixo estão todos os detalhes.

Aqui está a configuração do meu nó de gerenciamento:

[ndbd default]
NoOfReplicas=3
#DataMemory=2048M
#IndexMemory=512M
 
#Management Nodes
[ndb_mgmd]
hostname=192.168.0.1
NodeId=1
datadir=/var/lib/mysql-cluster
 
[ndb_mgmd]
hostname=192.168.0.2
NodeId=2
datadir=/var/lib/mysql-cluster
 
#Data Nodes
[ndbd]
hostname=192.168.0.3
NodeId=3
datadir=/usr/local/mysql/data
 
[ndbd]
hostname=192.168.0.4
NodeId=4
datadir=/usr/local/mysql/data
 
[ndbd]
hostname=192.168.0.5
NodeId=5
datadir=/usr/local/mysql/data
 
#front end servers
[mysqld]
hostname=192.168.0.1
#NodeId=11
 
[mysqld]
hostname=192.168.0.2
#NodeId=22

Aqui está minha configuração do nó sql - my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
ndbcluster

[mysql_cluster]
ndb-connectstring=192.168.0.1,192.168.0.2

Aqui está a string de conexão do nó de dados

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=192.168.0.1,192.168.0.2

Isto é o que ndb_mgm> show está dizendo

id=3    @192.168.0.3  (mysql-8.3.0 ndb-8.3.0, starting, Nodegroup: 0)
id=4    @192.168.0.4  (mysql-8.3.0 ndb-8.3.0, starting, Nodegroup: 0)
id=5    @192.168.0.5  (mysql-8.3.0 ndb-8.3.0, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)
id=1    @192.168.0.1  (mysql-8.3.0 ndb-8.3.0)
id=2    @192.168.0.2  (mysql-8.3.0 ndb-8.3.0)

[mysqld(API)]   2 node(s)
id=6 (not connected, accepting connect from 192.168.0.1)
id=7 (not connected, accepting connect from 192.168.0.2)

Os nós 3,4 e 5 estão presos no status

ndb_mgm> 3 status
Node 3: starting (Last completed phase 0) (mysql-8.3.0 ndb-8.3.0)

ndb_mgm> 4 status
Node 4: starting (Last completed phase 0) (mysql-8.3.0 ndb-8.3.0)

ndb_mgm> 5 status
Node 5: starting (Last completed phase 0) (mysql-8.3.0 ndb-8.3.0)

Os nós SQL 6 (11) e 7 (22) não serão conectados.

Os nós SQL e de dados não têm nada em seus logs de erros. O log do cluster para os nós de gerenciamento repete isso a cada minuto:

TIME [MgmtSrvr] INFO     -- Alloc node id 6 rejected, no new president yet
TIME [MgmtSrvr] WARNING  -- Unable to allocate nodeid for API at 192.168.0.1. Returned error: 'Cluster not ready for nodeid allocation.'
TIME [MgmtSrvr] INFO     -- Node 3: Initial start, waiting for 4 and 5 to connect,  nodes [ all: 3, 4 and 5 connected: 3 no-wait:  ]
TIME [MgmtSrvr] INFO     -- Node 5: Initial start, waiting for 3 and 4 to connect,  nodes [ all: 3, 4 and 5 connected: 5 no-wait:  ]
TIME [MgmtSrvr] INFO     -- Node 4: Initial start, waiting for 3 and 5 to connect,  nodes [ all: 3, 4 and 5 connected: 4 no-wait:  ]
mysql
  • 1 respostas
  • 22 Views
Martin Hope
hunter
Asked: 2024-05-03 02:52:14 +0800 CST

Emular varredura de índice solto para múltiplas colunas com direção de classificação alternada

  • 7

Há algum tempo, fiz esta pergunta sobre como selecionar com eficiência permutações exclusivas de colunas no Postgres. Agora tenho uma pergunta complementar sobre como fazer isso, além de poder ordenar qualquer uma das colunas com qualquer combinação de ASC/ DESCentre as colunas.

A tabela contém centenas de milhões de linhas e, embora a resposta aceita à minha pergunta anterior seja muito mais rápida do que as abordagens tradicionais, não ser capaz de ordenar as colunas de maneira ad-hoc me impede de fazer bom uso dessa consulta ( Eu realmente preciso 'paginar', com LIMIT/ OFFSETem pequenos pedaços). Existe uma maneira de fazer isso? O autor da resposta anterior sugeriu gentilmente uma solução alternativa (alterar a comparação de linhas para uma cláusula where explícita), que tentei, mas não parece funcionar (ou não entendi).

Dada a seguinte consulta genérica:

WITH RECURSIVE cte AS (
   (
   SELECT col1, col2, col3, col4
   FROM   tbl
   ORDER  BY 1,2,3,4
   LIMIT  1
   )
   UNION ALL
   SELECT l.*
   FROM   cte c
   CROSS  JOIN LATERAL (
      SELECT t.col1, t.col2, t.col3, t.col4
      FROM   tbl t
      WHERE (t.col1, t.col2, t.col3, t.col4) > (c.col1, c.col2, c.col3, c.col4)
      ORDER  BY 1,2,3,4
      LIMIT  1
      ) l
   )
SELECT * FROM cte

Existe uma maneira de ordenar as colunas de forma ad hoc, mantendo o desempenho? Por exemplo:

ORDER BY by col1 DESC, col2 ASC, col3 ASC, col4 DESC

Suponha um índice em cada coluna, bem como um índice combinado em todas as 4 colunas.

A versão do Postgres é 15.4.
A tabela é somente leitura no sentido de que os dados não podem/não serão modificados, porém serão adicionados. A seguir está um CREATE TABLEscript para replicar minha tabela problemática (mais ou menos):

CREATE TABLE tbl (id SERIAL primary key, col1 integer NOT NULL, col2 integer NOT NULL, col3 integer NOT NULL, col4 integer NOT NULL);

INSERT INTO tbl (col1, col2, col3, col4) SELECT (random()*1000)::int AS col1, (random()*1000)::int AS col2, (random()*1000)::int AS col3, (random()*1000)::int AS col4 FROM generate_series(1,10000000);

CREATE INDEX ON tbl (col1);
CREATE INDEX ON tbl (col2);
CREATE INDEX ON tbl (col3);
CREATE INDEX ON tbl (col4);
CREATE INDEX ON tbl (col1, col2, col3, col4);
postgresql
  • 1 respostas
  • 68 Views
Martin Hope
Cassandra Thrift
Asked: 2024-05-02 18:00:49 +0800 CST

Existe um gráfico de compatibilidade RHEL para Cassandra?

  • 5

Você poderia me informar se existe algum gráfico de compatibilidade para Cassandra e RHEL? Mais especificamente, quero saber se

Cassandra 3.11 é compatível com RHEL8* e RHEL9*? Cassandra 4.1 é compatível com RHEL7.9?

cassandra
  • 1 respostas
  • 16 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve