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
mediocre
Asked: 2024-06-10 13:03:45 +0800 CST

Citus: Trabalhador paralelo não inicia

  • 5

Estamos realizando Citusbenchmarking e nos deparamos com uma situação onde o planejador faz o parallel execution planmas durante a execução não parallel workerssão lançados. O cluster possui 3 nós de trabalho, cada um com 2CPUs em execução no Centos. Qual pode ser a razão por trás disso?

->  Finalize Aggregate  (cost=76650.31..76650.32 rows=1 width=32) (actual time=174741.832..174741.999 rows=1 loops=1)
                 ->  Gather  (cost=76650.09..76650.30 rows=2 width=32) (actual time=174741.807..174741.974 rows=1 loops=1)
                       Workers Planned: 2
                       Workers Launched: 0
                       ->  Partial Aggregate  (cost=75650.09..75650.10 rows=1 width=32) (actual time=174740.490..174740.492 rows=1 loops=

A consulta que estamos usando para benchmarking é

select sum(amount) from tab_dist_1 where id>=49820 and id<=59743292;
postgresql
  • 1 respostas
  • 25 Views
Martin Hope
Betty Liv
Asked: 2024-06-09 21:46:52 +0800 CST

Instale o MongoDB em uma unidade diferente de C

  • 5

Durante a instalação do MongoDB Community 7.0, o instalador solicita os caminhos para o banco de dados e eu os aponto para a unidade E: dedicada de 50 GB vazia, que foi criada especialmente para o MongoDB.

A próxima etapa indica que a unidade de destino C: não tem espaço suficiente. E a lista de unidades abaixo mostra C: e E:, mas E: não pode ser selecionado.

O MongoDB não pode ser instalado em nenhuma unidade diferente de C:?

mongodb
  • 1 respostas
  • 9 Views
Martin Hope
Roman N
Asked: 2024-06-09 04:20:39 +0800 CST

Como mover partições para outro servidor pg?

  • 5
Esta questão foi migrada do Stack Overflow porque pode ser respondida no Stack Exchange dos Administradores de Banco de Dados. Migrado há 2 dias .

Eu tenho uma tabela com 1b linhas e ela continua crescendo. Atualmente, uso o pg_partman para particionamento por mês. Existem muitas consultas selecionadas apenas para os meses atuais ou anteriores. É possível mover partições "antigas" para outro servidor? Então, idealmente, quero ter 1 servidor (poderoso com discos rápidos) apenas com partições recentes e um segundo servidor (barato) com outras partições. Devo usar a extensão postgres_fdw para vincular partições? Quais são as boas práticas para alcançar este tipo de esquema?

postgresql
  • 1 respostas
  • 39 Views
Martin Hope
SomeBody
Asked: 2024-06-07 21:43:40 +0800 CST

A execução do gatilho pós-inserção é concluída quando a próxima entrada é inserida?

  • 6

Tenho um banco de dados SQL Server com uma tabela com um gatilho que é executado após a inserção. Se eu inserir duas entradas diretamente, uma após a outra, é importante que a segunda entrada seja inserida somente após o término da execução do gatilho. Posso confiar nisso? Ou posso ter uma condição de corrida problemática em algum momento?

O código do gatilho fica assim:

ALTER TRIGGER [dbo].[TR_MachineState_Desable_OldData_ON_Insert]
   ON [dbo].[machine_state]
   AFTER INSERT
AS 
BEGIN
      DECLARE @RowID INT;
      DECLARE @Name NVARCHAR(30);
      DECLARE @MachineState NVARCHAR(30);
      DECLARE @Devicescount INT;
      DECLARE @StartedOn DATETIME;
      DECLARE @CreateOn DATETIME;
      DECLARE @ToolName NVarchar(30);


    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
          SELECT
                   @RowID=[RowId]
                  ,@Name= [Name]
                  ,@MachineState=[MachineState]
                  ,@Devicescount=[Devicescount]
                  ,@StartedOn= [StartedOn]
                  ,@CreateOn =[ActionDate]
                  ,@ToolName=[ToolName]
        from inserted ;

    update [machine_state]
    set [IsActive]=0
    where  [Name] =@Name and  ToolName = @ToolName and  RowId <> @RowID

    update machine_state
    set IsActive =1
    where RowId=@RowID


END

Como você pode ver, o gatilho garante que apenas a última entrada com o mesmo nome de ferramenta e o mesmo nome seja IsActiveverdadeira.

sql-server
  • 2 respostas
  • 54 Views
Martin Hope
Jaka
Asked: 2024-06-07 17:48:34 +0800 CST

Listando todas as reescritas de consultas avançadas declaradas no Oracle

  • 5

A página de documentação DBMS_ADVANCED_REWRITE para Oracle explica como declarar reescritas de consulta e eliminá-las, mas não explica como você pode listar todas as reescritas declaradas no banco de dados.

É possível listar todas as reescritas declaradas?

oracle
  • 1 respostas
  • 23 Views
Martin Hope
Dominique
Asked: 2024-06-07 14:36:57 +0800 CST

Por que o SQL-Server Management Studio altera “Execute Query” para “Save Results”?

  • 10

Sou um usuário regular do SQL-Server Management Studio mas agora estou com uma situação totalmente estranha: quando pressiono F5ou clico em "Executar", o SQL-Server Management Studio não executa minha consulta. Em vez disso, abre a caixa de diálogo "Salvar resultados", como você pode ver:

insira a descrição da imagem aqui

Alguém já viu isso e sabe como lidar com isso?
desde já, obrigado

sql-server
  • 1 respostas
  • 497 Views
Martin Hope
Artashes Khachatryan
Asked: 2024-06-07 14:29:23 +0800 CST

Filtrar por número de partição quando a tabela for particionada por coluna computada

  • 12

Criei 2 tabelas idênticas particionadas por uma coluna inteira. Em uma das tabelas a coluna é computada, na outra tabela a coluna não é computada.

Quando eu consulto a tabela com coluna computada filtrando uma única classificação de partição com índice clusterizado (assumindo que os dados de saída já estão classificados, portanto, nenhuma classificação adicional é necessária), ela verifica a tabela inteira.

CREATE PARTITION FUNCTION pf_test(int) AS RANGE RIGHT FOR VALUES(1, 2, 3, 4)
GO
CREATE PARTITION SCHEME ps_test AS PARTITION pf_test ALL TO([PRIMARY])
GO
CREATE TABLE test_computed
(
    ID BIGINT NOT NULL, 
    ID_C AS CAST(ID % 4 AS INT) PERSISTED, 
    PRIMARY KEY CLUSTERED (ID, ID_C) ON ps_test(ID_C)
) ON ps_test(ID_C)
GO
    
CREATE TABLE test_not_computed
(
    ID BIGINT NOT NULL, 
    ID_C INT NOT NULL, 
    PRIMARY KEY CLUSTERED (ID, ID_C) ON ps_test(ID_C)
) ON ps_test(ID_C)
GO
    
INSERT INTO test_computed(ID)
SELECT TOP 1000000 ROW_NUMBER() OVER(ORDER BY GETDATE())
FROM sys.all_columns a
CROSS JOIN sys.all_columns b
GO
    
INSERT INTO test_not_computed(ID, ID_C)
SELECT TOP 1000000 
    ROW_NUMBER() OVER(ORDER BY GETDATE()), 
    ROW_NUMBER() OVER(ORDER BY GETDATE()) % 4
FROM sys.all_columns a
CROSS JOIN sys.all_columns b
GO

Os dados são idênticos, mas os planos de execução para cada consulta são diferentes.

SELECT TOP 100 *
FROM test_computed
WHERE $partition.pf_test(ID_C) = 1
ORDER BY ID DESC
    
SELECT TOP 100 *
FROM test_not_computed
WHERE $partition.pf_test(ID_C) = 1
ORDER BY ID desc

Planos

A tabela real possui bilhões de linhas; estamos usando particionamento para evitar a varredura de toda a tabela.

A versão do SQL Server é

Microsoft SQL Server 2019 (RTM-CU26) (KB5035123) - 15.0.4365.2 (X64)
29 de março de 2024 23:02:47 Copyright (C) 2019 Microsoft Corporation
Developer Edition (64 bits) no Windows Server 2022 Standard 10.0 (Build 20348 :)

sql-server
  • 1 respostas
  • 210 Views
Martin Hope
Istopopoki
Asked: 2024-06-05 20:06:44 +0800 CST

O planejador de consultas do Postgres mudou repentinamente de ideia

  • 5

Minha tabela Postgres possui uma coluna de intervalo contendo carimbos de data e hora com fuso horário. Eu criei um índice no limite inferior do intervalo, assim:

CREATE INDEX bdg_sys_period_start_idx ON building USING btree (lower(sys_period));

Agora estou tentando executar a seguinte consulta:

select * from building where lower(sys_period) > '2024-05-12 10:31:14.481545+01'::timestamptz;

Aí vem a parte interessante. Eu executo um ANALYZE na tabela e depois um EXPLAIN na consulta. Eu entendi isso:

insira a descrição da imagem aqui

Perfeito, o Postgres quer usar meu novo índice!

Então eu inicio a consulta e leva muito tempo. Paro a consulta e executo EXPLAIN novamente. E, surpresa, o planejador de consultas agora me diz que deseja usar uma varredura sequencial.

insira a descrição da imagem aqui

Vejo que o número planejado de linhas retornadas salta de 97 mil para 1,6 milhões. O número real é 30 linhas.

Tenho muitas perguntas sobre esta situação:

  • Por que o planejador de consultas mudou repentinamente de ideia?
  • As estatísticas devem ser coletadas para colunas de intervalo? Eu vi essa discussão , mas não tenho certeza se isso foi implementado.
  • Tentei criar uma estatística personalizada em lower(sys_period) diretamente:
CREATE STATISTICS IF NOT EXISTS sys_period_start_range ON ( lower(sys_period) ) FROM building;

É suposto ser útil?

  • Tentei aumentar o tamanho da estatística na coluna sys_period
ALTER TABLE building ALTER sys_period SET STATISTICS 1000;

É suposto ser útil?

Agradeço antecipadamente por sua ajuda.

postgresql
  • 2 respostas
  • 28 Views
Martin Hope
birgersp
Asked: 2024-06-05 19:48:03 +0800 CST

Um índice de tempo deve estar em ordem crescente ou decrescente?

  • 6

Planejando algumas tabelas novas, estou tentando decidir se um índice deve ser "crescente" ou "descendente".

A tabela será bem grande (imagino aproximadamente 2.000 inserções por minuto, migrando inicialmente de uma tabela diferente com cerca de 1 bilhão de linhas).

Usarei a extensão timescaledb para isso (para particionamento por tempo).

É assim que a tabela pode ser criada:

create table "Sample"(
    "id" bigserial,
    "deviceId" int not null,
    "timestamp" timestamptz not null,
    "value" float8 not null
);
select create_hypertable('"Sample"', 'timestamp'); -- creates a desc index on "timestamp"

create index on "Sample"("deviceId", "timestamp"); -- should this be "desc"?

Estas são as duas consultas mais comuns que executaremos (deviceId e timestamps podem variar, é claro):

select "timestamp", "value"
from "Sample" where "deviceId"=123 and "timestamp"<'2024-01-01Z'
order by "timestamp" desc limit 1;

E

select "timestamp", "value"
from "Sample" where "deviceId"=123 and "timestamp" between '2024-01-01Z' and '2024-02-01Z'
order by "timestamp" asc;

Então, o que estou tentando entender é em que ordem o "carimbo de data e hora" deve estar? E porque?

Minha intuição (provavelmente errada) me diz que o índice com "timestamp" deveria estar em ordem crescente, pois preciso ordenar os dados por timestamp em ordem crescente .

Porém, os exemplos na documentação da escala de tempo sempre indexam as colunas de tempo em ordem decrescente. Eu não entendo muito bem o porquê.

Qual é a escolha ideal de índices aqui?

postgresql
  • 1 respostas
  • 36 Views
Martin Hope
Burak Yurdakul
Asked: 2024-06-05 16:40:33 +0800 CST

Como descobrir qual consulta está anexada ao cursor

  • 5

Vejo consultas em execução como FETCH ALL IN "<unnamed portal 847>"

Como posso descobrir qual consulta está anexada a este cursor?

postgresql
  • 1 respostas
  • 15 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