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
sujeet
Asked: 2023-09-21 12:34:23 +0800 CST

Adicionando uma chave primária a uma grande tabela PostgreSQL com alto tráfego

  • 10

Preciso adicionar uma chave primária a uma tabela grande do PostgreSQL (aproximadamente 2 TB) com alto tráfego. Esta é uma operação crítica e estou procurando orientação sobre como fazê-la com eficiência.

Eu já tentei os passos abaixo:

-- Step 1: Add id identity column 
ALTER TABLE users
ADD COLUMN id BIGINT GENERATED ALWAYS as IDENTITY;

-- Step 2: Add unique index on (id, user_id) concurrently
CREATE UNIQUE INDEX CONCURRENTLY users_id_user_id_idx
   ON users (id, user_id);

-- verify that step 2 is completed
-- Step 3: Add primary key
ALTER TABLE users
   ADD CONSTRAINT users_pkey PRIMARY KEY USING INDEX users_id_user_id_idx;

Estou enfrentando dois problemas:

  • A tabela está completamente bloqueada na própria "Etapa 1".

    Eu sei que isso é esperado, mas se houver alguma opção para evitar isso, sugira.

  • Eu recebo o erro abaixo,

ERRO: não foi possível estender o arquivo "base/16401/90996": Não há espaço restante no dispositivo DICA: Verifique o espaço livre em disco.

Mas ainda tenho espaço 600GBde armazenamento no meu servidor.

Como a tabela ficará bloqueada na "Etapa 1", e se não houver opção para evitar isso, eu poderia aproveitar o tempo de inatividade e adicionar a idcoluna primeiro e depois executar os outros dois scripts.

Não sei se isso resolveria o erro de armazenamento.

Forneça sugestões para que eu possa adicionar o PK com o menor tempo de inatividade possível.

PostgreSQL v14.6

postgresql
  • 1 respostas
  • 618 Views
Martin Hope
Qiu Yangfan
Asked: 2023-09-21 11:16:25 +0800 CST

Posso usar multithread na extensão Postgresql?

  • 5

Eu gostaria de melhorar o desempenho de uma extensão Postgresql e certamente o multi-thread é considerado. Embora aproximadamente, eu saiba que até agora o Postgresql é baseado em vários processos e, na extensão, coisas do Postgresql como SRF_FIRSTCALL_INIT(), SRF_PERCALL_SETUP, MemoryContextSwitchTo(), CreateTemplateTupleDesc(), palloc(), Int64GetDatum e assim por diante são usadas, então minhas perguntas :

  • As APIs acima são thread-safe?
  • Posso usar multithread na extensão Postgresql? Em caso afirmativo, você forneceria algum exemplo ou alguma sugestão?
  • Existe alguma estrutura de múltiplos processos que seja realmente preferível para extensão? Assim como LaunchParallelWorker() e RegisterBackgroundWorker(), eles são aplicáveis ​​para extensão?
  • Existe algum método para realizar algo em paralelo na extensão?
postgresql
  • 1 respostas
  • 47 Views
Martin Hope
Skary
Asked: 2023-09-20 17:33:39 +0800 CST

Como fazer um SQL Server remoto para extrair dados locais do SQL Server

  • 5

No meu cenário, tenho um SQL Server Express que é minha fonte de dados. Periodicamente produz lotes de dados, que devem ser carregados em um repositório central (um SQL Server SE na nuvem). A fonte de dados conhece o repositório central, mas o repositório central não conhece nenhuma fonte de dados possível (pode mudar com o tempo). Não sei se o SQL Server Express suporta envio de logs, nem estou familiarizado com essa tecnologia; de qualquer forma, especificaria que, por outro motivo, não é uma solução viável.

Minha solução atual é fazer upload, da fonte de dados, através do servidor vinculado (apontar para a nuvem SQL Server SE), todos os dados quando necessário. Dá trabalho sem dúvida, mas monitorando o SQL Server SE central (na nuvem) vejo um grande volume de solicitação. A leitura da documentação me parece que o envio de dados é ineficiente e enviará uma linha por vez (isso explica o baixo desempenho que tenho e o volume de solicitações no SQL Server SE central).

Gostaria de saber se existe uma maneira de executar remotamente um pull no SQL Server central, acionado pelo remoto. Dessa forma, posso explorar o fato de que extrair dados deve ser eficiente, empurrá-los e contornar o problema de que o SQL Server central não sabe qual fonte de dados irá contatá-lo e quando.

sql-server
  • 2 respostas
  • 50 Views
Martin Hope
Elikill58
Asked: 2023-09-20 16:45:40 +0800 CST

Somar coluna e remover soma de linhas

  • 5

Quero somar a coluna "quantidade" agrupada por nome e servidor e remover linhas duplicadas. Quero que essas alterações sejam salvas (não apenas com uma consulta).

Por exemplo, aqui estão os dados iniciais:

Eu ia servidor nome quantia
1 20 a 1
2 20 a 1
3 30 b 2
4 20 b 1
5 20 a 1

E aqui está o que eu quero:

Eu ia servidor nome quantia
1 20 a 3
3 30 b 2
4 20 b 1

Na verdade, posso fazer isso com:

SELECT SUM(amount) as amount FROM myTable GROUP BY server, name;

Porém, obterei apenas o valor da coluna de valor. Não atualizará a tabela e nem removerá outras linhas.

Se eu fizer algo assim, UPDATE myTable SET amount = (SELECT SUM(amount) as amount FROM myTable WHERE server = myTable.server AND name = myTable.name)não funcionará, pois não posso selecionar uma atualização.

Então, como posso fazer?

mysql
  • 1 respostas
  • 15 Views
Martin Hope
Peter
Asked: 2023-09-20 16:15:48 +0800 CST

Crie elementos JSON com base no conteúdo da tabela

  • 9

Com o esquema de banco de dados a seguir, estou tentando recuperar um JSON dos itens combinados com propriedades e um indicador se eles estiverem conectados.

Comecei com:

DECLARE @Item TABLE
(
   ItemId INT,
   Name VARCHAR(25)
);

INSERT INTO @Item
(
   ItemId,
   Name
)
VALUES
(
   1,
   'Item 1'
),
(
   2,
   'Item 2'
);

DECLARE @Property TABLE
(
   PropertyId INT,
   Name VARCHAR(10)
);

INSERT INTO @Property
(
   PropertyId,
   Name
)
VALUES
(
   1,
   'Property 1'
),
(
   2,
   'Property 2'
),
(
   3,
   'Property 3'
);

DECLARE @ItemProperty TABLE
(
   ItemId INT,
   PropertyId INT
);

INSERT INTO @ItemProperty
(
   ItemId,
   PropertyId
)
VALUES
(
   1,
   1
),
(
   1,
   2
),
(
   2,
   2
),
(
   2,
   3
);

SELECT *
FROM   @Item AS i
       OUTER APPLY (
                      SELECT
                           p.Name,
                           CASE WHEN ip.PropertyId IS NOT NULL THEN
                                   CAST(1 AS BIT)
                                ELSE CAST(0 AS BIT)
                           END AS ItemExists
                      FROM @Property AS p
                           LEFT JOIN @ItemProperty AS ip ON ip.PropertyId = p.PropertyId
                                                            AND ip.ItemId = i.ItemId
                   ) a
WHERE  i.ItemId = 1
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;

Isso me dá o seguinte resultado:

{
    "ItemId": 1,
    "Name": "Item 1",
    "a": [
        {
            "Name": "Property 1",
            "ItemExists": true
        },
        {
            "Name": "Property 2",
            "ItemExists": true
        },
        {
            "Name": "Property 3",
            "ItemExists": false
        }
    ]
}

No entanto, eu gostaria de ter isso como resultado

{
    "ItemId": 1,
    "Name": "Item 1",
    "Property 1": true,
    "Property 2": true,
    "Property 3": false
}

E quando adiciono uma nova propriedade a @Property, gostaria que ela fosse adicionada automaticamente.

Como posso conseguir isso?

sql-server
  • 2 respostas
  • 265 Views
Martin Hope
mu88
Asked: 2023-09-20 16:13:49 +0800 CST

Propague funções pgAdmin com grupos do Active Directory ao usar o Docker

  • 5

Quero configurar uma instância pgAdmin para nossa equipe usando a implantação do Docker. Como nossa organização usa o Active Directory, gostaria de atribuir a função de usuário pgAdmin a um grupo específico do AD ao iniciar o contêiner Docker pgAdmin.

Na documentação já encontrei a opção de usar o pgAdmin com LDAP, então espero que o acesso ao nosso AD funcione.

O que não encontrei: é possível atribuir uma função pgAdmin a um grupo AD ou apenas a usuários AD? E se sim, isso pode acontecer automaticamente na inicialização do contêiner Docker (por exemplo, usando uma variável de ambiente ou um arquivo de configuração semelhante a servers.json)?

Ou dito em outras palavras: é possível que fique assim depois que o contêiner for iniciado apenas por configuração, sem qualquer interação manual? insira a descrição da imagem aqui

pgadmin
  • 1 respostas
  • 22 Views
Martin Hope
Stephen H
Asked: 2023-09-19 23:43:08 +0800 CST

O Grupo de Disponibilidade do SQL Server 2017 agora pensa que está em um cluster – não está e nunca esteve!

  • 5

Temos um grupo de disponibilidade em escala de leitura no SQL 2017 que durante anos funcionou sem falhas. Agora, quando tentamos adicionar uma nova réplica (com CLUSTER_TYPE=NONE), ela falha porque o primário agora "pensa" que faz parte de um WSFC - no entanto, não faz parte de um WSFC e nunca fez. É um servidor de grupo de trabalho independente. As outras réplicas em escala de leitura deste AG ainda estão funcionando corretamente – é tudo muito estranho. Você sabe como modificar o AG para ser sem cluster? Não vejo uma maneira de fazer isso com um AG ativo (ou seja, vejo isso no CREATE, mas não no ALTER) - no entanto, não tenho ideia de como o AG está funcionando quando pensa que está em um cluster, mas claramente está não. Algum conselho?

Informações de erro/Quando uma tentativa de associação é feita com "ALTER AVAILABILITY GROUP {AG_Name} JOIN WITH (CLUSTER_TYPE = NONE)", ela falha com o seguinte:

Msg 47100, Nível 16, Estado 0, Linha 1 O tipo de cluster do grupo de disponibilidade '{AG_Name}' não corresponde à sua configuração primária. Verifique se o tipo de cluster do grupo de disponibilidade especificado está correto e tente novamente a operação.

Msg 41080, Nível 16, Estado 0, Linha 1 Falha ao excluir o nome da instância do SQL Server para a entrada do mapa de nome do nó do Windows Server Failover Clustering para a réplica de disponibilidade local do grupo de disponibilidade '{AG_Name}'. A operação encontrou o erro 35222 do SQL Server e foi encerrada. Consulte o log de erros do SQL Server para obter detalhes sobre esse erro do SQL Server e ações corretivas.

Msg 41158, Nível 16, Estado 3, Linha 1 Falha ao associar a réplica de disponibilidade local ao grupo de disponibilidade '{AG_Name}'. A operação encontrou o erro 47100 do SQL Server e foi revertida. Verifique o log de erros do SQL Server para obter mais detalhes. Quando a causa do erro for resolvida, tente novamente o comando ALTER AVAILABILITY GROUP JOIN.

sys.dm_hadr_cluster retorna o seguinte (cluster_name está em branco): cluster_name quorum_type quorum_type_desc quorum_state quorum_state_desc

0   NODE_MAJORITY   1   NORMAL_QUORUM

sys.availability_groups retorna 0 para cluster_type e wsfc para cluster_type_desc

sys.hadr_cluster_members retorna uma linha: {primaryservername}

0 CLUSTER_NODE 1 UP NULO

sql-server
  • 1 respostas
  • 60 Views
Martin Hope
BrokenPhysics
Asked: 2023-09-19 21:18:21 +0800 CST

Privilégio SHOW TRIGGERS sem também poder DROP TRIGGER?

  • 6

É possível dar privilégio a um usuário para visualizar Triggers, ou seja, executar o SHOW TRIGGERScomando, sem também dar permissão para isso DROP TRIGGER?

O histórico é que quero dar a determinados usuários a capacidade de fazer um despejo/backup/cópia completo de nosso banco de dados de produção (incluindo gatilhos), mas quero manter o número de contas que podem realmente alterar o banco de dados de produção o menor possível.

mysql
  • 1 respostas
  • 19 Views
Martin Hope
herhor67
Asked: 2023-09-19 20:56:10 +0800 CST

Comprimentos CHAR e VARCHAR para caracteres multibyte

  • 6

Eu tenho uma tabela com aproximadamente 100 milhões de linhas. Uma das colunas é uma VARCHAR(64)com utf8mb4codificação para armazenar apelidos de usuários (outras são alguns números inteiros).

Os dados nessa coluna possuem MAX(LENGTH()) == 42e MAX(CHAR_LENGTH()) == 24(posso anexar uma imagem da distribuição de comprimentos, se necessário). Cerca de 90% das linhas usam apenas caracteres ASCII.

Na documentação do MySQL,

CHAR(30) pode conter até 30 caracteres. [...] uma coluna CHAR(255) pode exceder 768 bytes

Então, isso significa que ele pode armazenar N caracteres, até mesmo multibyte? Que tal um varchar, o tamanho especificado significa bytes ou caracteres?

Minha tabela exige principalmente gravação ( INSERT O.D.K. UPDATE). É uma boa ideia mudar para um campo de comprimento constante (especialmente com strings não muito longas) em vez de tê-los como um campo de comprimento variável, provavelmente armazenado em algum outro lugar do disco?

Distribuição de comprimento de bytes:

Distribuição de comprimento de bytes

Distribuição Char_length:

Distribuição Char_length

mysql
  • 1 respostas
  • 48 Views
Martin Hope
Stefano Ambrogi
Asked: 2023-09-19 19:11:00 +0800 CST

Erro VSSSQLwriter

  • 6

Tenho um servidor SQl 2019 em um núcleo padrão do Windows Server 2019, gerencio dois tipos de backup, um com planos de manutenção e outro com Veeam Backup. Os planos de manutenção estão ok, o backup com Veeam falha todos os dias com erro no SQL deixando o SQLServerWriter no estado Failed com último erro Erro não repetível. Abri um ticket no suporte da Veeam e lamentamos o log de variação e o problema não estava relacionado à Veeam porque mesmo criando backup com o comando vss há erros. De acordo com os logs, a tarefa de backup falha com o erro:

[11.09.2023 00:07:12] <01> Error Failed to create snapshot: Backup job failed.  
[11.09.2023 00:07:12] <01> Error Cannot create a shadow copy of the volumes containing writer's data.  
[11.09.2023 00:07:12] <01> Error A VSS critical writer has failed. Writer name: [SqlServerWriter].

Nos gravadores VSS, o erro pode ser observado:

Writer name: 'SqlServerWriter'  
Writer Id: {a65faa63-5ea8-4ebc-9dbd-a0c4db26912a}  
Writer Instance Id: {1fb6de2a-c593-45c2-b592-e90ff6aad393}  
State: [8] Failed  
Last error: Non-retryable error 

Os seguintes erros podem ser observados nos eventos de aplicativos do Windows:

Log Name: Application  
Source: SQLWRITER  
Date: 11.09.2023 0:07:05  
Event ID: 24583  
Task Category: None  
Level: Error  
Keywords: Classic  
User: N/A  
Computer: SQL03Core  
Description:  
Sqllib error: OLEDB Error encountered calling ICommandText::Execute. hr = 0x80040e14.   SQLSTATE: 42000, Native Error: 3013  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: BACKUP DATABASE is terminating abnormally.  
SQLSTATE: 42000, Native Error: 3224  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: Cannot create worker thread.  

Log Name: Application  
Source: SQLWRITER  
Date: 11.09.2023 0:07:05  
Event ID: 24583  
Task Category: None  
Level: Error  
Keywords: Classic  
User: N/A  
Computer: SQL03Core  
Description:  
Sqllib error: OLEDB Error encountered calling ICommandText::Execute. hr = 0x80040e14.   SQLSTATE: 42000, Native Error: 3013  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: BACKUP DATABASE is terminating abnormally.  
SQLSTATE: 42000, Native Error: 3202  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: Write on "{7F86B757-DC6E-4B76-B35D-F382797EB665}414" failed: 995(The I/O operation has been aborted because of either a thread exit or an application request.) 

O servidor possui 536 bancos de dados e 8 núcleos, então o suporte da Veeam supõe que o problema estava relacionado a um número insuficiente de threads de trabalho, portanto de acordo com https://learn.microsoft.com/en-us/sql/database-engine /configure-windows/configure-the-max-worker-threads-server-configuration-option?view=sql-server-ver16 , alteramos o número de threads de trabalho para 1000, mas os erros continuam aumentando, então o suporte da Veeam sugere contar com ajuda para otimizar máquina e rosca de acordo com a carga.

Alguém pode sugerir uma maneira de proceder? Desculpe pelo meu inglês ruim e desde já agradeço... Stefano

performance
  • 1 respostas
  • 21 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