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
brettkanker
Asked: 2024-07-08 21:05:15 +0800 CST

Saída de linhas vazias

  • 5

Bom dia a todos, tenho esta consulta que retorna logs com diferentes Event IDs que ocorreram nos últimos minutos:

SELECT LogEventID, LogMessage, LogTime
FROM Database.dbo.ApplLog
WHERE (LogEventID LIKE 14
OR LogEventID LIKE 20
OR LogEventID LIKE 27
OR LogEventID LIKE 40
OR LogEventID LIKE 41
OR LogEventID LIKE 42)
AND LogTime < CURRENT_TIMESTAMP
AND LogTime > DateADD(mi, -5, CURRENT_TIMESTAMP);

Os resultados são assim, por exemplo:

LogEventID Mensagem de registro
42 Erro ao transmitir novo Incidente XYZ
42 Erro ao transmitir novo Incidente XYZ
20 Erro ao transmitir o Incidente XYZ atualizado

Existem mais 4 EventIDs. Na maioria das vezes, os outros EventIDs não produzem logs. Em nossa solução de monitoramento, configurei um sensor que executa essa consulta regularmente. Resumindo, não consigo configurar o sensor corretamente porque nem todos os EventIDs produziram logs nos últimos minutos ao mesmo tempo.

Minha pergunta é: como faço para gerar linhas falsas com todos os LogEventIDs, mas LogMessages vazios, para que eu tenha todos os LogEventIDs que não produziram logs nos últimos minutos, em todos os resultados de consulta junto com os que produziram? Algo assim:

LogEventID Mensagem de registro
42 Erro ao transmitir novo Incidente XYZ
42 Erro ao transmitir novo Incidente XYZ
20 Erro ao transmitir o Incidente XYZ atualizado
14
27
40
41

Eu vi este post , mas não entendo a solução e é muito mais complicado do que (parece) que precisa ser. Obrigado pela ajuda antecipadamente.

EDIT: Aqui estão as definições da tabela conforme solicitado. Espero que estas sejam as definições de tabela: imagem das propriedades da tabela

sql-server
  • 1 respostas
  • 68 Views
Martin Hope
Jarrett Prosser
Asked: 2024-07-08 05:58:33 +0800 CST

A inicialização da replicação lógica do PostgreSQL em tabelas grandes apresenta picos de atividade e longas esperas

  • 5

Estou tentando mover um banco de dados Postgresql grande (4 TB) do AWS RDS para o banco de dados do Azure para servidor flexível Postgresql usando replicação lógica (publicação/assinatura). Estou realizando a replicação progressivamente por tabela e sincronizando as tabelas maiores, uma por uma, para reduzir a sobrecarga do WAL no primário. Estou enfrentando travamentos e longas esperas ao sincronizar tabelas maiores (> 10 GB).

Começando com a assinatura sincronizada e atualizada, quando adiciono uma nova tabela à publicação e atualizo a assinatura, vejo o tráfego de rede e o uso do disco aumentarem imediatamente (capacidade de gravação no assinante de 100 MB/s). Após cerca de meia hora, o tráfego quase para (1MB/s ou menos). Após algum período variável de 1 a 12 horas, o tráfego aumenta repentinamente novamente. Esse processo se repete até que a sincronização seja concluída e a tabela esteja atualizada.

Inspecionei os logs do banco de dados em ambos os lados e não consigo ver nenhuma mensagem de erro ou mesmo informações relacionadas ao processo de replicação. O que pode estar causando esses longos travamentos? Existem mais diagnósticos que posso fazer para ver a causa?

postgresql
  • 1 respostas
  • 17 Views
Martin Hope
John
Asked: 2024-07-07 22:15:43 +0800 CST

Mesclar versões antigas e novas do mesmo banco de dados MariaDB

  • 5

Fiz uma migração de servidor e quando portei os bancos de dados do servidor antigo para o novo houve alguma corrupção de dados. No exemplo, os dados binários IPv6 parecem exatamente iguais, porém as entradas do servidor antigo geralmente são retornadas como vazias. Os registros criados no novo servidor estão corretos. Não houve nenhuma alteração na estrutura do banco de dados.

Como faço para pegar as exportações originais do servidor antigo e importar apenas os novos registros dos bancos de dados do novo servidor?

mariadb
  • 1 respostas
  • 15 Views
Martin Hope
Pete
Asked: 2024-07-07 18:20:36 +0800 CST

Como modelar diferentes visualizações lógicas de dados

  • 6

Exemplo simplificado de um problema de modelagem de dados que tenho:

Tenho um modelo de domínio com imagetabela, cameratabela, machinetabela, restrição de chave estrangeira entre imagem e câmera ( taken_by_camera) e um FK entre câmera e máquina ( installed_into_machine).

image taken_by_camera camera
camera installed_into_machine machine

Tudo isso é baseado nos dados que obtemos dos clientes.

Porém, em nossa aplicação utilizamos os dados quase sempre em termos de conjuntos de imagens. Então, também temos uma setmesa. Cada imagem pertence a um conjunto e para isso temos um belongs_to_setFK na imagemesa.

image belongs_to_set set

Meu problema é que eu gostaria de restringir os conjuntos a conterem apenas imagens de uma máquina específica, por exemplo

set restricted_to_machine machine

Com apenas esses FKs implementados, não tenho nenhuma restrição que garanta que todas as imagens conectadas via câmera a uma máquina específica também acabem sendo conectadas à mesma máquina por meio do aparelho.

image_1 taken_by_camera camera_1
camera_1 installed_into_machine **machine_1**
image_1 belongs_to_set set_1
set_1 restricted_to_machine **machine_2**

Como posso modelar algo assim (logicamente, mas também no postgres).

PS: Deve ser possível ter imagens tiradas por câmeras diferentes em um conjunto, desde que essas câmeras estejam instaladas na mesma máquina.

postgresql
  • 1 respostas
  • 34 Views
Martin Hope
J. Mini
Asked: 2024-07-06 02:35:35 +0800 CST

Export-DbaScript: Como posso criar um diretório se ele ainda não existe?

  • 5

Eu gosto de usar Export-DbaScriptpara exportar para pastas nomeadas C:\TargetFolder\Database\Schema. Muitas vezes, ainda não tenho uma Database\Schemapasta, o que fará com que Export-DbaScriptnão consiga gravar nessa pasta. Existe alguma maneira de Export-DbaScriptcriar a pasta se ela ainda não existir? Estou esperando algo parecido com um -Forceparâmetro, mas não encontrei na documentação.

estou fazendo

Export-DbaScript `
  -InputObject $_ `
  -NoPrefix `
  -NoClobber `
  -FileName "$($MyLocation)\$($_.Database)\$($_.Name).sql

Quando o caminho não existe, recebo System.IO.DirectonaryNotFoundExceptions. Estou na versão 2.1.18

export
  • 1 respostas
  • 54 Views
Martin Hope
Victor Cordeiro Costa
Asked: 2024-07-05 04:30:02 +0800 CST

Não é possível redefinir a senha do usuário root no MySQL

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

Estou tentando instalar e configurar o MySQL na minha máquina (MacBook Pro M3 Max com Sonoma 14.5 OS) mas não está mais sendo possível fazer login. A senha do root continua sendo alterada depois que eu desligo a máquina e ligo no dia seguinte.

Quando executo o mysql_secure_installationcomando e tento configurar uma senha, ocorre o seguinte erro de acesso negado:

$ mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
Error: Access denied for user 'root'@'localhost' (using password: YES)

Tentei alterar a senha do usuário root executando

sudo mysqld_safe --skip-grant-tables 

, então

mysql -root

, então os comandos para redefinir a senha, mas diz que mysqldjá existe um processo que bloqueia a execução de outros comandos.

$ sudo mysqld_safe --skip-grant-tables

2024-07-04T17:57:49.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/Victors-MacBook-Pro.local.err'.
2024-07-04T17:57:49.6NZ mysqld_safe A mysqld process already exists

↳ Este erro está acontecendo mesmo depois de eu matar todos os processos mysqlde mysqlcom

sudo kill -9

ou

sudo pkill -9 mysqld

ou

sudo killall -9 mysqld

ou

sudo killall -9 mysqld_safe 

ou listando todos os processos com

ps aux | grep mysql  

e matando cada um deles manualmente via

sudo kill -9 <process_id>

Então, no final das contas, não consigo usar o MySQL na minha máquina devido a esse problema de login. Alguém poderia me ajudar? Obrigado!

mysql
  • 1 respostas
  • 37 Views
Martin Hope
Eduard Sukharev
Asked: 2024-07-04 22:18:05 +0800 CST

PostgreSQL usa varredura de índice lenta em vez de varredura de heap de bitmap + varredura de índice com ORDER BY e LIMIT específico

  • 5

Dada a seguinte tabela:

CREATE TABLE chat_message (
    id bigint DEFAULT nextval('public.chat_message_id_seq'::regclass) NOT NULL,
    "user" integer,
    type smallint,
    text text
);
ALTER TABLE ONLY chat_message ADD CONSTRAINT pk_chat_message PRIMARY KEY (id);
CREATE INDEX idx_chat_message_user_type ON chat_message USING btree ("user", type);
CREATE INDEX k_chat_message_user ON chat_message USING btree ("user");

onde type é 1ou NULL, então a consulta:

EXPLAIN ANALYZE
SELECT *
FROM "chat_message" AS t
WHERE true
  AND "type" = 1
  AND "user" = 1234567
ORDER BY "user", "type", "id" ASC
LIMIT 10 OFFSET 0;

fornece a seguinte saída:

                                                                       QUERY PLAN                                                                       
--------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=53644.94..53644.97 rows=10 width=127) (actual time=4.817..4.818 rows=6 loops=1)
   ->  Sort  (cost=53644.94..53681.60 rows=14663 width=127) (actual time=4.816..4.816 rows=6 loops=1)
         Sort Key: id
         Sort Method: quicksort  Memory: 26kB
         ->  Bitmap Heap Scan on chat_message t  (cost=362.86..53328.08 rows=14663 width=127) (actual time=1.975..2.181 rows=6 loops=1)
               Recheck Cond: (("user" = 1234567) AND (type = 1::smallint))
               Heap Blocks: exact=3
               ->  Bitmap Index Scan on idx_chat_message_user_type  (cost=0.00..359.19 rows=14663 width=0) (actual time=1.822..1.822 rows=6 loops=1)
                     Index Cond: (("user" = 1234567) AND (type = 1::smallint))
 Planning time: 0.348 ms
 Execution time: 5.028 ms

Mas uma vez que o valor LIMIT é reduzido abaixo de algum valor (para 9 na minha máquina local), o plano de consulta muda para isto:

                                                                        QUERY PLAN                                                                         
-----------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.56..50193.33 rows=9 width=127) (actual time=23119.188..46005.965 rows=6 loops=1)
   ->  Index Scan using pk_chat_message on chat_message t  (cost=0.56..81775168.50 rows=14663 width=127) (actual time=23119.187..46005.962 rows=6 loops=1)
         Filter: ((type = 1::smallint) AND ("user" = 1234567))
         Rows Removed by Filter: 49452956
 Planning time: 14.840 ms
 Execution time: 46006.683 ms

o que é muito lento.

Há uma enorme distorção de dados para esse usuário exato: são 50.000 rows WHERE type is NULLe apenas 6 WHERE type = 1. Além disso, solicitando o mesmo LIMIT 9, mas WHERE type is NULLtem exatamente o mesmo plano de consulta, mas funciona rápido:

                                                                         QUERY PLAN                                                                          
-------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=153793.13..153793.15 rows=9 width=127) (actual time=886.897..886.898 rows=9 loops=1)
   ->  Sort  (cost=153793.13..153909.07 rows=46374 width=127) (actual time=886.894..886.894 rows=9 loops=1)
         Sort Key: gs_type, id
         Sort Method: top-N heapsort  Memory: 27kB
         ->  Bitmap Heap Scan on chat_message t  (cost=1143.90..152826.25 rows=46374 width=127) (actual time=12.561..878.947 rows=49934 loops=1)
               Recheck Cond: (("user" = 1234567) AND (type IS NULL))
               Heap Blocks: exact=10903
               ->  Bitmap Index Scan on idx_chat_message_user_type  (cost=0.00..1132.31 rows=46374 width=0) (actual time=9.942..9.942 rows=49934 loops=1)
                     Index Cond: (("user" = 1234567) AND (type IS NULL))
 Planning time: 0.308 ms
 Execution time: 887.027 ms

No servidor de produção, exatamente os mesmos dados carregados em um servidor com especificações diferentes do meu laptop (mais memória RAM, enorme shared_buffers, max_memcarga de trabalho constante de outras tabelas diferentes) se comportam de maneira semelhante, apenas o valor do limite é diferente (é lento Index Scanaté 75, e depois rápido Bitmap Heap Scan+ Bitmap Index Scande 76 e mais).

Algumas informações adicionais:

SELECT * FROM pg_stat_user_tables WHERE relname = 'chat_message';

relname     |seq_scan   |seq_tup_read   |idx_scan   |idx_tup_fetch  |n_tup_ins  |n_tup_upd  |n_tup_del  |n_tup_hot_upd  |n_live_tup |n_dead_tup |n_mod_since_analyze|last_vacuum|last_autovacuum|last_analyze   |last_autoanalyze   |vacuum_count   |autovacuum_count   |analyze_count  |autoanalyze_count  |
chat_message|0          |0              |11         |197,652,914    |0          |0          |0          |0              |0          |0          |0                  |           |               |               |                   |0              |0                  |0              |0                  |

SELECT * FROM pg_stats where tablename = 'chat_message';

schemaname  |tablename      |attname       |inherited|null_frac|avg_width|n_distinct|most_common_vals
public      |chat_message   |id            |false    |0        |8        |-1        |
public      |chat_message   |user          |false    |0        |4        |30145     |{redacted}
public      |chat_message   |text          |false    |0        |38       |45553     |{redacted}
public      |chat_message   |type          |false    |0.7656   |2        |1         |{1}

Minhas perguntas são:

  • Por que o mesmo Index Scanfica muito lento quando se trata dessas poucas linhas?
  • Por que Index Scansempre usa pk_chat_messageíndice, mesmo que haja mais adequado idx_chat_message_user_type, mesmo que ORDER BYa cláusula tenha todos os campos da WHEREcláusula ( ordem por influencia o uso do índice )?
  • Por que LIMIT Nafeta o plano de consulta porque ele Index Scanprefere Bitmap Index + Heap Scan?
  • O que pode ser feito para que esta consulta tenha um desempenho decente (menos de 1s) para esta user + typee outras?
postgresql
  • 2 respostas
  • 24 Views
Martin Hope
Marcello Miorelli
Asked: 2024-07-04 19:47:33 +0800 CST

erro ao reaplicar o script de permissões no banco de dados original - sql server

  • 6

quando executo o seguinte script:

-- ——— SCRIPT GRANTS for Object Privileges—————

IF OBJECT_ID('[sys].[sysrowsets]') IS NOT NULL   GRANT CONTROL on [sys].[sysrowsets] to [db_myrole_BA]

Recebo esta mensagem de erro:

Msg 15151, Level 16, State 1, Line 271
Cannot find the object 'sysrowsets', because it does not exist or you do not have permission.

No entanto:

quando executo isso:

select radhe=OBJECT_ID('[sys].[sysrowsets]')

insira a descrição da imagem aqui

Meu script original vem daqui:

-- SCRIPT GRANTS for Objects Level Privilegs
PRINT '-- ——— SCRIPT GRANTS for Object Privileges—————'
SELECT
[GRANTS for Object Privileges]='IF OBJECT_ID(''['+ sys.schemas.name + '].[' + sys.objects.name + ']''' + ') IS NOT NULL ' + CHAR(13) + SPACE(1) +
state_desc + ' ' + permission_name + ' on ['+ sys.schemas.name + '].[' + sys.objects.name + '] to [' + sys.database_principals.name + ']' COLLATE SQL_Latin1_General_CP1_CI_AS
from sys.database_permissions
join sys.objects on sys.database_permissions.major_id = 
sys.objects.object_id
join sys.schemas on sys.objects.schema_id = sys.schemas.schema_id
join sys.database_principals on sys.database_permissions.grantee_principal_id = 
sys.database_principals.principal_id
where sys.database_principals.name not in ( 'public', 'guest')
--order by 1, 2, 3, 5

Como é possível que eu esteja recebendo esse erro?

Quero salvar todas essas permissões, para que, quando restaurar o banco de dados, possa reaplicar essas permissões.

sql-server
  • 2 respostas
  • 91 Views
Martin Hope
Akshay Bande
Asked: 2024-07-04 11:08:16 +0800 CST

Altere a coluna timestamptz para timestamp, sem reescrever a tabela

  • 6

Estou usando conectores de origem Postgres Debezium, que não suportam colunas com timezone . Quero converter uma coluna da tabela do tipo from timestamptzpara timestamp.

A tabela Postgres armazena dados apenas no fuso horário UTC, idealmente não deve haver nenhuma alteração de valor nesta conversão. Qual a melhor maneira de alcançar isto?

postgresql
  • 1 respostas
  • 30 Views
Martin Hope
John
Asked: 2024-07-04 03:04:49 +0800 CST

Agrupamento geral Unicode oculto via mysqli_get_charset mesmo que todo o resto seja 520 e 1400

  • 5

Fiz uma migração de servidor e estou fazendo uma auditoria. No novo servidor, finalmente tive a liberdade de atualizar o MariaDB para 10.11 (precisava do 10.10 para obter suporte ao Unicode 14.0) e anteriormente estava preso no suporte ao Unicode 5.2.

Eu acompanhei isso via print_r(mysqli_get_charset($db));PHP. Depois de alterar o agrupamento do servidor ( SHOW VARIABLES LIKE '%coll%';) tudo aparece corretamente como utf8mb4_uca1400_ai_ci. Ainda não atualizei os bancos de dados ou tabelas, que estão todos parados, utf8mb4_unicode_520_cio que está bom por enquanto.

O problema é que print_r(mysqli_get_charset($db));retorna utf8mb4_general_ci. Então, investiguei iniciando minha instalação local do MariaDB, já que tenho o log de todas as consultas em execução. Quando você executa esse comando em PHP, ele se traduz na seguinte consulta:

SELECT `DEFAULT_COLLATION_NAME` FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`='__database_name_here__';

Ok, então peguei essa consulta e executei-a no servidor ativo e obtive utf8mb4_unicode_520_ci(de novo, tudo bem por enquanto). Por motivos não relacionados, reiniciei o servidor várias vezes, portanto isso não deve ser um problema de "preso na memória".

Então, onde está mysqli_get_charset($db)o utf8mb4_general_ciagrupamento para que eu possa atualizá-lo?

mariadb
  • 1 respostas
  • 11 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