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
Evan Carroll
Asked: 2019-01-07 14:03:10 +0800 CST

Como posso obter um array exclusivo no PostgreSQL?

  • 22

A seguir

SELECT ARRAY[a,b,c,d]
FROM ( VALUES
  ('foo', 'bar', 'foo', 'baz' )
) AS t(a,b,c,d);

Retornos {foo,bar,foo,baz}do tipo text[]. Gostaria de obter {foo,bar,baz}do tipo text[] com um dos elementos duplicados fooremovidos ? O PostgreSQL tem uma função exclusiva que funciona em um array de texto ou anyarrayem um anyelement?

postgresql array
  • 4 respostas
  • 32729 Views
Martin Hope
James D
Asked: 2018-10-17 07:44:46 +0800 CST

Ainda é uma prática recomendada evitar o uso das portas padrão do SQL Server?

  • 22

Historicamente, era recomendado não usar as portas padrão para conexões com o SQL Server, como parte das práticas recomendadas de segurança. Em um servidor com uma única instância padrão, as seguintes portas seriam usadas por padrão:

  • Serviço SQL Server - Porta 1433 (TCP)
  • Serviço SQL Server Browser - Porta 1434 (UDP)
  • Conexão de administrador dedicada - Porta 1434 (TCP)

PERGUNTAS:

  • Este conselho ainda é relevante?
  • TODAS as portas acima devem ser alteradas?
sql-server security
  • 5 respostas
  • 12706 Views
Martin Hope
Rogelio Delgado
Asked: 2018-10-01 13:47:31 +0800 CST

Diferença entre tuplas buscadas e retornadas no postgresql

  • 22

Estou enfrentando um momento difícil tentando descobrir alguns problemas de desempenho no meu banco de dados. Estou usando vários recursos on-line para aprender o que monitorar e como interpretar essas informações.

Do exposto, não consigo encontrar uma explicação clara sobre qual é a diferença entre pg_stat_database.tup_returnede pg_stat_database.tup_fetched.

No pgAdmin4, existe um lindo gráfico chamado "Tuples out" onde esses dois conceitos são contrastados, mas não sei como interpretar a informação. Na documentação oficial diz apenas que:

  • tup_returned: Número de linhas retornadas por consultas neste banco de dados
  • tup_fetched: Número de linhas buscadas por consultas neste banco de dados

O que exatamente significa "buscado" e "retornado"?

Estou usando o postgresql 10.

postgresql performance
  • 1 respostas
  • 12734 Views
Martin Hope
Taryn
Asked: 2018-03-15 09:12:43 +0800 CST

Bancos de dados do SQL Server Distributed Availability Group não sincronizados após a reinicialização do servidor

  • 22

Estamos nos preparando para realizar uma grande atualização em nossos SQL Servers e estamos percebendo um comportamento incomum com os Grupos de Disponibilidade Distribuídos que estou tentando resolver antes de avançar.

No mês passado, atualizei um servidor secundário remoto do SQL Server 2016 para o SQL Server 2017. Esse servidor faz parte de vários Grupos de Disponibilidade Distribuídos (DAGs) e um Grupo de Disponibilidade (AG) separado . Quando atualizamos este servidor, não sabíamos que ele entraria em um estado ilegível , portanto, durante o mês passado, contamos apenas com o servidor primário.

Como parte da próxima atualização, apliquei o patch CU 4 ao servidor e o reiniciei. Quando o servidor voltou a ficar online, o secundário recém corrigido mostrou que todos os DAGs/AGs estavam sincronizando sem problemas.

No entanto, a primária estava mostrando uma história muito diferente. Foi relatando que

  • o AG separado estava sincronizando sem problemas
  • mas os DAGs estavam em um estado Não Sincronizado / Não Saudável

Depois de entrar em pânico inicialmente, tentei as seguintes coisas para sincronizar as coisas novamente nos DAGs:

  • A partir do primário, parei e retomei a movimentação de dados. Isso não começou a sincronizar os dados.
  • No secundário (o que acabei de corrigir) eu corri ALTER DATABASE [<database] SET HADR RESUME;- que executa sem erros, mas não retomou nenhuma sincronização

Minha última tentativa de sincronizar os dados novamente foi fazer login no secundário e reiniciar manualmente o serviço SQL Server. Reiniciar manualmente o serviço parece um pouco extremo, pois eu esperava que o servidor sendo reinicializado fosse suficiente.

Alguém já se deparou com esse problema em que um DAG não inicia a sincronização com um secundário após uma reinicialização? Se sim, como foi resolvido?

Eu verifiquei o log de erros do SQL Server e o visualizador de eventos no servidor secundário, não havia nada fora do comum que eu pudesse ver.

sql-server availability-groups
  • 3 respostas
  • 7169 Views
Martin Hope
Alan B
Asked: 2018-01-31 06:30:22 +0800 CST

Injeção do SQL Server - quanto dano em 26 caracteres?

  • 22

Estou testando a resiliência contra ataques de injeção em um banco de dados SQL Server.

Todos os nomes de tabela no banco de dados são minúsculos e o agrupamento diferencia maiúsculas de minúsculas, Latin1_General_CS_AS .

A string que posso enviar é forçada para maiúscula e pode ter no máximo 26 caracteres. Portanto, não posso enviar um DROP TABLE porque o nome da tabela estaria em letras maiúsculas e, portanto, a instrução falharia devido ao agrupamento.

Então - qual é o dano máximo que eu poderia fazer em 26 caracteres?

EDITAR

Eu sei tudo sobre consultas parametrizadas e assim por diante - vamos imaginar que a pessoa que desenvolveu o front-end que cria a consulta para enviar não usou parâmetros neste caso.

Também não estou tentando fazer nada nefasto, este é um sistema construído por outra pessoa da mesma organização.

sql-server t-sql
  • 6 respostas
  • 8628 Views
Martin Hope
JackLThornton
Asked: 2017-10-31 07:14:38 +0800 CST

Por que o BULK INSERT é considerado perigoso?

  • 22

Gostaria de entender por que as equipes de segurança cibernética em geral (mais de uma organização com quem lidei) são totalmente contra a concessão BULK INSERT(por exemplo, TSQL) de direitos a aplicativos e programadores de banco de dados? Não posso acreditar na desculpa de "preencher o abuso do disco", a menos que esteja faltando alguma coisa, pois o resultado final não é diferente de um aplicativo fazendo algo como:

for (long i = 0; i < LONG_MAX; ++i)
    executeSQL("INSERT INTO table VALUES(...)");

e INSERTé um comando DML comum que qualquer pessoa com permissão de gravação básica pode executar.

Para benefício de um aplicativo, BULK INSERTé muito mais eficiente, rápido e alivia o programador da necessidade de analisar arquivos fora do SQL.

Edit: Eu originalmente fiz essa pergunta no site de segurança da informação por um motivo - não são os DBAs que são contra o uso de BULK INSERT, é a "Garantia de Informações" (IA para abreviar - o pessoal de segurança cibernética) que está forçando o problema. Vou deixar essa questão ficar por mais um ou dois dias, mas se a operação em massa realmente ignorar restrições ou gatilhos, posso ver que isso é um problema.

sql-server permissions
  • 4 respostas
  • 17342 Views
Martin Hope
Tara Kizer
Asked: 2017-06-01 10:45:33 +0800 CST

Os gatilhos compilam toda vez?

  • 22

Estamos solucionando um servidor que tem alta utilização da CPU. Depois de descobrir que as consultas não estavam causando isso, começamos a procurar compilações.

O Monitor de desempenho está mostrando menos de 50 compilações/s e menos de 15 recompilações/s.

Depois de executar uma sessão XE procurando por compilações, estamos vendo milhares de compilações por segundo.

Este sistema está usando gatilhos para auditar mudanças. A maioria das compilações são devido a gatilhos. Os gatilhos fazem referência a sys.dm_tran_active_transactions.

Nosso primeiro pensamento foi que talvez referenciar um DMV em um gatilho faria com que ele compilasse todas as vezes, ou talvez apenas esse DMV específico o causasse. Então comecei a testar essa teoria. Ele compila toda vez, mas eu não verifiquei se um gatilho compila toda vez que é acionado quando não faz referência ao DMV e, em vez disso, codifica um valor. Ele ainda estava compilando cada vez que era acionado. Soltar o gatilho interrompe as compilações.

  1. Estamos usando sqlserver.query_pre_execution_showplan em uma sessão XE para rastrear as compilações. Por que há uma discrepância entre isso e o contador PerfMon?
  2. É normal que você receba um evento de compilação toda vez que um gatilho é executado?

Reproduzir script:

CREATE TABLE t1 (transaction_id int, Column2 varchar(100));
CREATE TABLE t2 (Column1 varchar(max), Column2 varchar(100));
GO

CREATE TRIGGER t2_ins
ON t2
AFTER INSERT
AS

INSERT INTO t1
SELECT (SELECT TOP 1 transaction_id FROM sys.dm_tran_active_transactions), Column2
FROM inserted;
GO

--Both of these show compilation events
INSERT INTO t2 VALUES ('row1', 'value1');
INSERT INTO t2 VALUES ('row2', 'value2');
GO

ALTER TRIGGER t2_ins
ON t2
AFTER INSERT
AS

INSERT INTO t1
SELECT 1000, Column2
FROM inserted;
GO

--Both of these show compilation events
INSERT INTO t2 VALUES ('row3', 'value3');
INSERT INTO t2 VALUES ('row4', 'value4');

DROP TRIGGER t2_ins;

--These do not show compilation events
INSERT INTO t2 VALUES ('row5', 'value5');
INSERT INTO t2 VALUES ('row6', 'value6');

DROP TABLE t1, t2;
sql-server trigger
  • 2 respostas
  • 3351 Views
Martin Hope
user2652379
Asked: 2017-03-30 17:28:33 +0800 CST

Não usar restrições de chave estrangeira na prática real. Está tudo bem? [duplicado]

  • 22
Essa pergunta já tem respostas aqui :
Restrições de integridade em um banco de dados relacional - devemos ignorá-las? (3 respostas)
Onde você deve definir chaves estrangeiras? (4 respostas)
Fechado há 5 anos .

Não usar restrições FK é a regra incontável da minha empresa. As restrições FK são usadas apenas ao projetar ERD e não ao criar tabelas.

De acordo com meu sênior, na prática, esses são obstáculos que consomem muito tempo quando estamos lidando com questões urgentes. Ele diz que quando precisamos usar instruções INSERT/UPDATE/DELETE imediatamente, as restrições bloqueiam a execução dessas instruções e escrever instruções enquanto mantém as restrições também consome tempo. Eu até ouvi que muitas outras empresas estão fazendo isso.

Embora eu entenda as dificuldades, não tenho certeza se essa é uma boa maneira, pois é bem oposta ao meu entendimento do DB. Essa empresa é meu primeiro emprego também, então não sei como outras empresas lidam com isso.

De forma prática, qual é a sua opinião sobre isso? Isso pode ser justificado? Existem maneiras melhores? Como outras empresas estão fazendo sobre este assunto?

ATUALIZAÇÃO: Parece que é uma abordagem bastante comum para empresas sul-coreanas. Perguntei a alguns outros seniores que trabalharam para outras empresas, e a maioria deles está dizendo que todos estão fazendo assim. E até um deles trabalhava para uma empresa financeira! Interessante...

database-design foreign-key
  • 4 respostas
  • 27102 Views
Martin Hope
Eric
Asked: 2017-01-11 16:33:43 +0800 CST

Índices compostos: coluna mais seletiva primeiro?

  • 22

Eu tenho lido sobre composite indexese estou um pouco confuso sobre o pedido. Esta documentação (pouco menos da metade) diz

Em geral, você deve colocar a coluna que deve ser usada com mais frequência primeiro no índice.

No entanto, pouco depois diz

crie um índice composto colocando a coluna mais seletiva primeiro; ou seja, a coluna com mais valores.

A Oracle também diz isso aqui em outras palavras

Se todas as chaves forem usadas nas cláusulas WHERE com a mesma frequência, a ordem dessas chaves da mais seletiva para a menos seletiva na instrução CREATE INDEX melhora melhor o desempenho da consulta.

No entanto, encontrei uma resposta SO que diz de forma diferente. Diz

Organize as colunas com a coluna menos seletiva primeiro e a coluna mais seletiva por último. No caso de empate leve com a coluna que tem mais chances de ser usada sozinha.

A primeira documentação que mencionei diz que você deve primeiro usar o mais usado, enquanto a resposta do SO diz que deve ser apenas para desempate. Então eles também diferem na ordem.

Esta documentação também fala skip scanninge diz

A varredura de salto é vantajosa se houver poucos valores distintos na coluna inicial do índice composto e muitos valores distintos na chave não inicial do índice.

Outro artigo diz

A coluna de prefixo deve ser a mais discriminativa e a mais amplamente usada em consultas

o que eu acredito que mais discriminador significaria mais distinto.

Toda essa pesquisa ainda me leva à mesma pergunta; A coluna mais seletiva deve ser a primeira ou a última? A primeira coluna deve ser a mais usada e apenas a mais seletiva em um tie-break?

Esses artigos parecem se contradizer, mas oferecem alguns exemplos. Pelo que reuni, parece ser mais eficiente least selective columnser o primeiro na ordenação se você estiver antecipando Index Skip Scans. Mas não tenho muita certeza se isso está correto.

oracle oracle-10g
  • 7 respostas
  • 11586 Views
Martin Hope
Evan Carroll
Asked: 2016-11-23 20:20:05 +0800 CST

CREATE TABLE AS vs SELECT INTO

  • 22

PostgreSQL suporta CREATE TABLE ASe SELECT INTOquando eu uso ambos?

CREATE TABLE AS-- define uma nova tabela a partir dos resultados de uma consulta

CREATE TABLE AScria uma tabela e a preenche com dados calculados por um SELECTcomando. As colunas da tabela têm os nomes e tipos de dados associados às colunas de saída do SELECT(exceto que você pode substituir os nomes das colunas fornecendo uma lista explícita de novos nomes de colunas).

CREATE TABLE AStem alguma semelhança com a criação de uma visão, mas é bem diferente: cria uma nova tabela e avalia a consulta apenas uma vez para preencher a nova tabela inicialmente. A nova tabela não rastreará alterações subsequentes nas tabelas de origem da consulta. Em contraste, uma visão reavalia sua SELECTdeclaração de definição sempre que é consultada.

E depois.

SELECT INTO-- define uma nova tabela a partir dos resultados de uma consulta

SELECT INTOcria uma nova tabela e a preenche com dados calculados por uma consulta. Os dados não são devolvidos ao cliente, como ocorre com um arquivo SELECT. As colunas da nova tabela têm os nomes e tipos de dados associados às colunas de saída do arquivo SELECT.

postgresql ctas
  • 2 respostas
  • 15531 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