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
TheGameiswar
Asked: 2017-08-08 22:02:21 +0800 CST

Hash chaves sonda e residual

  • 21

Digamos, temos uma consulta como esta:

select a.*,b.*
from 
a join b
on a.col1=b.col1
and len(a.col1)=10

Supondo que a consulta acima use um Hash Join e tenha um residual, a chave de investigação será col1e o residual será len(a.col1)=10.

Mas ao passar por outro exemplo, pude ver que tanto a sonda quanto o residual são a mesma coluna. Abaixo está uma elaboração sobre o que estou tentando dizer:

Consulta:

select *
from T1 join T2 on T1.a = T2.a 

Plano de execução, com sonda e residual em destaque:

insira a descrição da imagem aqui

Dados de teste:

create table T1 (a int, b int, x char(200))
create table T2 (a int, b int, x char(200))

set nocount on
declare @i int
set @i = 0
while @i < 1000
  begin
      insert T1 values (@i * 2, @i * 5, @i)
    set @i = @i + 1
  end

declare @i int
set @i = 0
while @i < 10000
  begin
    insert T2 values (@i * 3, @i * 7, @i)
    set @i = @i + 1
  end

Pergunta:

Como uma sonda e um resíduo podem ser a mesma coluna? Por que o SQL Server não pode usar apenas a coluna do probe? Por que ele precisa usar a mesma coluna como residual para filtrar as linhas novamente?

Referências para dados de teste:

  • Hash Join (Blog do SQL Server de Craig Freedman)
sql-server performance
  • 1 respostas
  • 5121 Views
Martin Hope
Marcello Miorelli
Asked: 2017-05-18 00:29:27 +0800 CST

A cadeia de certificados foi emitida por uma autoridade não confiável

  • 21

algum tempo atrás eu instalei o SQL Server 2016 Developer Edition em um ambiente Windows 10 Home Edition ( um laptop para ser preciso ) e estava tudo bem.

então alguém - um administrador da caixa - decidiu, sem me dizer, renomear essa caixa.

depois disso, ao tentar a conexão com o SQL Server, temos recebido as seguintes mensagens de erro:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

esta é uma pergunta muito semelhante a esta:

“A cadeia de certificados foi emitida por uma autoridade que não é confiável” ao conectar o banco de dados na função VM do site do Azure

Eu também estive aqui:

O nome principal de destino está incorreto. Não é possível gerar contexto SSPI. (Microsoft SQL Server, Erro: 0)

e tenho usado o Kerberos Configuration Manager, que me dá uma mensagem de erro diferente

insira a descrição da imagem aqui

Devo dizer que sou capaz de me conectar a esta instância do SQL Server pela autenticação do SQL Server, mas quero me conectar usando a autenticação do Windows.

só para ficar claro - tudo isso é uma máquina local, que não pertence a nenhum domínio.

Não tenho certeza de como proceder a partir daqui, o que quero é usar a autenticação do Windows.

A mensagem de erro relacionada aos certificados me faz pensar em reemitir certificados aqui. Não tenho certeza de como fazer isso, ou se essa é uma maneira válida de lidar com essa situação.

Eu não estarei perto desta máquina durante o dia, mas vou alcançá-la o mais rápido possível. Continuarei minha pesquisa quando o tempo permitir.

sql-server sql-server-2016
  • 2 respostas
  • 74611 Views
Martin Hope
Nicolas Payart
Asked: 2016-11-16 08:36:54 +0800 CST

Localizar objetos vinculados a uma função do PostgreSQL

  • 21

Algumas vezes criei um usuário do PostgreSQL chamado user1 (PostgreSQL 9.4.9).

Eu quero descartar este usuário. Então, primeiro revogo todas as permissões em tabelas, sequências, funções, privilégios padrão e propriedade também:

ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;

REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;

REASSIGN OWNED BY user1 TO postgres;

No entanto, parece que um objeto permanece vinculado a este usuário em 2 bancos de dados:

postgres=# DROP ROLE user1;
ERROR:  role "user1" cannot be dropped because some objects depend on it
DETAIL:  1 object in database db1
1 object in database db2

Até parece ser uma função:

postgres=# \c db1
You are now connected to database "db1" as user "postgres".
db1=# DROP ROLE user1;
ERROR:  role "user1" cannot be dropped because some objects depend on it
DETAIL:  privileges for function text(boolean)
1 object in database db2

Mas não consigo determinar qual objeto pertence ou está relacionado a user1.

Se eu pg_dump -s db1 | grep user1não obtenho resultado! Poderia ser um objeto global?

Como posso identificar o objeto perdido?

Executei os comandos em cada banco de dados (db1 e db2). Não quero descartar objetos pertencentes a user1, apenas quero reatribuir ou remover concessões para este usuário.

postgresql permissions
  • 3 respostas
  • 47317 Views
Martin Hope
uberrebu
Asked: 2016-11-03 08:06:01 +0800 CST

Excluir todos os dados no banco de dados Postgres

  • 21

Eu criei um novo dump de banco de dados de um servidor de produção com os sinalizadores --data-onlye --column-inserts, portanto, tenho apenas várias instruções de inserção para inserir dados ao executar uma restauração em um servidor de teste.

pg_dump -h localhost -U adminuser --data-only --column-inserts maindb > maindb.sql

Como excluo todos os dados no banco de dados do servidor de teste primeiro, antes de restaurar os dados do dump de produção?

Eu quero excluir todos os dados apenas para não ter que descartar e criar o banco de dados e todas essas coisas. Eu só quero remover dados e inserir novos dados, isso é tudo.

Não tenho a opção de descartar e criar o banco de dados por vários motivos. Terei que remover todos os dados e apenas inserir apenas, então o que for preciso para descobrir como fazer isso, estou disposto a fazer isso, mas preciso de ajuda, obviamente, para começar.

Também preciso automatizar esse processo. Automatizará "despejar dados do banco de dados de produção", depois "excluir dados no banco de dados de teste" e, em seguida, "restaurar dados no banco de dados de teste". Eu só preciso de ajuda na parte "excluir dados no banco de dados de teste".

Estou executando no PostgreSQL 9.5.2

postgresql postgresql-9.5
  • 6 respostas
  • 106774 Views
Martin Hope
Jeff Turner
Asked: 2016-10-01 18:55:00 +0800 CST

Por que as linhas inseridas em um CTE não podem ser atualizadas na mesma instrução?

  • 21

No PostgreSQL 9.5, dada uma tabela simples criada com:

create table tbl (
    id serial primary key,
    val integer
);

Eu corro o SQL para INSERT um valor e, em seguida, ATUALIZO na mesma instrução:

WITH newval AS (
    INSERT INTO tbl(val) VALUES (1) RETURNING id
) UPDATE tbl SET val=2 FROM newval WHERE tbl.id=newval.id;

O resultado é que UPDATE é ignorado:

testdb=> select * from tbl;
┌────┬─────┐
│ id │ val │
├────┼─────┤
│  1 │   1 │
└────┴─────┘

Por que é isso? Essa limitação faz parte do padrão SQL (ou seja, presente em outros bancos de dados) ou é algo específico do PostgreSQL que pode ser corrigido no futuro? A documentação de consultas WITH diz que vários UPDATEs não são suportados, mas não menciona INSERTs e UPDATEs.

postgresql cte
  • 2 respostas
  • 7465 Views
Martin Hope
krystah
Asked: 2016-08-17 23:42:58 +0800 CST

Por que essa conversão explícita está causando problemas apenas com um servidor vinculado?

  • 21

Estou consultando dados de um servidor vinculado por meio de uma exibição no servidor de origem. A visualização deve incluir algumas colunas padronizadas, como Created, Modifiede Deleted, mas, neste caso, a tabela no servidor de origem não possui nenhuma informação adequada. As colunas são, portanto, explicitamente convertidas para seus respectivos tipos. Atualizei a visualização, alterando uma coluna de

NULL AS Modified

para

CAST(NULL as DateTime) as Modified

No entanto, após realizar esta atualização, a visualização está acionando a seguinte mensagem de erro:

Msg 7341, Nível 16, Estado 2, Linha 3 Não é possível obter o valor da linha atual da coluna "(expressão gerada pelo usuário).Expr1002" do provedor OLE DB "SQLNCLI11" para o servidor vinculado "".

Fizemos essa mudança de "conversão explícita" geralmente no servidor de origem sem preocupações e suspeito que o problema possa estar relacionado à versão dos servidores envolvidos. Não precisamos realmente aplicar esse elenco, mas parece mais limpo. No momento, estou apenas curioso para saber por que isso está acontecendo.

Versão do servidor (origem):

Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 14 de maio de 2014 18:34:29 Copyright (c) Microsoft Corporation Enterprise Edition (64 bits) no Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor)

Versão do servidor (vinculado):

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 17 de junho de 2011 00:54:03 Copyright (c) Microsoft Corporation Enterprise Edition (64 bits) no Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor )

Editar
Acabei de perceber que cometi um erro ao não postar todas as colunas em questão e devo me desculpar por deixar de fora um detalhe importante. Não sei como não percebi isso antes. A questão ainda permanece, no entanto.

A conversão errada não acontece com a conversão para DateTime, mas com uma coluna sendo convertida para UniqueIdentifier.

Este é o culpado:

CAST(NULL AS UniqueIdentifier) AS [GUID]

UniqueIdentifiers são suportados no SQL Server 2008 R2 e, conforme mencionado nos comentários, a consulta executada pela exibição é executada corretamente no servidor vinculado.

sql-server sql-server-2008-r2
  • 5 respostas
  • 6993 Views
Martin Hope
dw8547
Asked: 2016-07-15 01:30:43 +0800 CST

Como divido uma longa linha de código PL/pgSQL em várias linhas?

  • 21

Existe uma maneira de dividir uma longa linha de código PL/pgSQL em várias linhas? Meu contexto é uma função de gatilho onde eu registro inserções em uma tabela conforme:

INSERT INTO insert_log (log_time, description)
VALUES (
    now()
    , 'A description. Made up of 3 semi long sentences. That I want to split, in the code, not in the log table, over 3 lines for readability.'
);
postgresql-9.4
  • 1 respostas
  • 16473 Views
Martin Hope
Azwok
Asked: 2016-07-09 05:32:35 +0800 CST

Grande conjunto de dados geoespaciais (>22 trilhões de itens) com desempenho de consulta de leitura rápida (<1s)

  • 21

Estou no processo de projetar um novo sistema para um grande conjunto de dados geoespaciais que exigirá desempenho de consulta de leitura rápida. Portanto, quero ver se alguém acha que é possível ou tem experiência/aconselhamento sobre SGBDs adequados, estrutura de dados ou métodos alternativos para obter o desempenho necessário na seguinte situação:

Os dados serão produzidos continuamente a partir de dados de radar de satélite processados, que terão cobertura global. Com base na resolução do satélite e na cobertura terrestre do globo, estimo que o conjunto de dados completo produza valores em 75 bilhões de localizações discretas no globo. Ao longo da vida útil de um único satélite, a saída produzirá até 300 valores em cada um desses locais (portanto, um conjunto de dados total de > 22 trilhões de valores). Isso é para um satélite, e já existe um segundo em órbita, com outros dois planejados nos próximos anos. Portanto, haverá muitos dados! Um único item de dados é muito simples e consistirá apenas em (longitude, latitude, valor), mas devido ao número de itens, estimo que um único satélite produza até 100 TB.

Os dados gravados nunca devem precisar de atualização, pois só crescerão à medida que novas aquisições de satélites forem processadas. O desempenho de gravação não é importante, mas o desempenho de leitura é crucial. O objetivo deste projeto é conseguir visualizar os dados através de uma interface simples como uma camada sobre o google maps, onde cada ponto possui um valor colorido baseado em sua média, gradiente ou alguma função ao longo do tempo. (demonstração no final do post).

A partir desses requisitos, o banco de dados precisa ser escalável e é provável que busquemos soluções em nuvem. O sistema precisa ser capaz de lidar com consultas geoespaciais como "pontos próximos (lat,lon)" e "pontos dentro de (caixa)" e ter desempenho de leitura < 1s para localizar um único ponto e polígonos que contenham até 50.000 pontos (embora até 200.000 pontos sejam preferíveis).

Até agora, tenho um conjunto de dados de teste de aproximadamente 750 milhões de itens de dados em 111 milhões de locais. Eu testei uma instância postgres/postGIS, que funcionou bem, mas sem a possibilidade de sharding, não acho que isso será capaz de lidar à medida que os dados crescem. longe e com fragmentação pode ser suficiente escalar com o volume de dados. Recentemente, aprendi um pouco sobre elasticsearch, portanto, qualquer comentário sobre isso seria útil, pois é novo para mim.

Aqui está uma animação rápida do que queremos alcançar com o conjunto de dados completo: Tileserver servindo visualização de 750 milhões de itens de dados.

Este gif (do meu teste do postgres) está servindo (6x3) blocos raster pré-computados, cada um contendo ~ 200.000 pontos e levando ~ 17s para gerar cada um. Ao clicar em um ponto, o gráfico é feito puxando todos os valores históricos no local mais próximo em < 1s.

Desculpas pelo longo post, todos os comentários/conselhos são bem-vindos.

database-design performance
  • 3 respostas
  • 1027 Views
Martin Hope
fiprojects
Asked: 2016-06-28 13:51:04 +0800 CST

Maneira mais fácil de duplicar linhas

  • 21

O mais próximo que posso encontrar do que quero fazer é Como duplicar linhas relacionadas , mas minha inexperiência me deixa perdido. Basicamente, quero copiar vários registros, alterar uma coluna e inseri-los de volta na mesma tabela (para que seja quase uma duplicata dos dados originais).

Menu de mesa é uma tabela de hash para um menu de comida (cada linha na tabela identificará uma categoria de menu (entrada, prato principal ou sobremesa, por exemplo) e produtos (peixe e batatas fritas).

Estrutura da tabela:

CREATE TABLE `menuship3` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `headhash` char(40) DEFAULT NULL,
  `menucardhash` char(40) DEFAULT NULL,
  `menucathash` char(40) DEFAULT NULL,
  `producthash` char(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `headhash` (`headhash`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8

Nos círculos de programação, eu diria que quero "bifurcar" meus dados...

Se o conteúdo da minha tabela fosse assim:

Eu iria headhash menucardhash menucathash produto hash
1 aaa aaa aaa aaa
2 aaa aaa aaa bbb
3 aaa aaa aaa ccc
4 aaa aaa bbb ddd
5 aaa aaa ccc eee
6 aaa outro xyz fgi
7 aaa outro xyz fgh

Eu quero duplicar todos os registros com menucardhash aaa (linhas 1-5), então vou acabar com uma tabela contendo 12 registros. Os registros extras terão novo menucarhash qqq em vez de menucardhash aaa.

Eu iria headhash menucardhash menucathash produto hash
8 aaa qqq aaa aaa
9 aaa qqq aaa bbb
10 aaa qqq aaa ccc
11 aaa qqq bbb ddd
12 aaa qqq ccc eee

O resultado significa que eu tenho registros que têm similaridade, os registros 1-5 são semelhantes aos registros 8-12 - as diferenças são as colunas id e menucardhash.

Eu ia apenas selecionar os registros dentro do PHP, alterar o menucathash e enviá-los de volta para o banco de dados, mas me perguntei se havia uma consulta SQL que poderia fazer isso por mim e, assim, reduzir a sobrecarga do ciclo da CPU.

Isso é possível por meio de uma ou duas consultas, ou é melhor que o PHP carregue o peso?

mysql
  • 1 respostas
  • 72907 Views
Martin Hope
AlwaysLearningNewStuff
Asked: 2016-06-08 03:32:48 +0800 CST

Implementando subtipo de um subtipo no padrão de design de tipo/subtipo com subclasses mutuamente exclusivas

  • 21

Introdução

Para que esta questão seja útil para futuros leitores, usarei o modelo de dados genérico para ilustrar o problema que enfrento.

Nosso modelo de dados consiste em 3 entidades, que serão rotuladas como A, Be C. Para manter as coisas simples, todos os seus atributos serão do inttipo.

A entidade Apossui os seguintes atributos: D, Ee X;

A entidade Bpossui os seguintes atributos: D, Ee Y;

A entidade Cpossui os seguintes atributos: De Z;

Como todas as entidades compartilham atributos comuns D, decidi aplicar o design de tipo/subtipo .

Importante: As entidades são mutuamente exclusivas! Isso significa que a entidade é A ou B ou C.

Problema:

Entidades Ae Bpossuem ainda outro atributo comum E, mas este atributo não está presente na entidade C.

Pergunta:

Gostaria de usar a característica descrita acima para otimizar ainda mais meu design, se possível.

Para ser honesto, não tenho ideia de como fazer isso, nem por onde começar a tentar, daí este post.

sql-server database-design
  • 3 respostas
  • 4586 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