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 / user-53784

WAF's questions

Martin Hope
WAF
Asked: 2017-03-15 07:28:12 +0800 CST

Encontrando ou confirmando a ausência de dados corrompidos no MongoDB

  • 2

Fundo

Eu tenho um diretório cheio de .gzarquivos que foram produzidos por mongodumpum mongod executando o MongoDB 3.4.x, que estou escrevendo em uma instância diferente executando o MongoDB 3.4.2 usando mongorestore ... --numInsertionWorkersPerCollection 8 --drop --nsFrom ... --nsTo .... Todos, exceto um, estão sendo carregados corretamente. Todos eles levam entre 1 e 3 horas para carregar os dados e, em seguida, mais 2 a 4 horas para reconstruir os índices. O arquivo problemático trava antes da etapa abaixo e costumo matar o processo externamente após cerca de um dia. Reproduzi o cenário 4 ou 5 vezes.

finished restoring database.collection (N documents) 

Durante esse tempo, o mongorestoreprocesso ainda está visível no shell, mas não possui uma entrada correspondente em db.currentOp(), e o tamanho do banco de dados não está aumentando.

Esses erros foram retornados logo antes da linha de log "restaurando índices para coleção database.collection from metadata":

2017-03-13T09:30:04.218-0400    demux namespaceHeader: {database collection true 726142452659775357}
2017-03-13T09:30:04.218-0400    demux checksum for namespace database.collection is correct (726142452659775357), 54599167880 bytes
2017-03-13T09:30:04.218-0400    demux finishing (err:corruption found in archive; I/O error reading length or terminator ( gzip: invalid header ))

Eu encontrei alguns relatórios de travamento do mongorestore ( por exemplo ) e alguma documentação de problemas com /s em namespaces em versões mais antigas ( por exemplo ), mas não encontrei uma descrição da minha situação.

Pergunta

Agora me encontro com alguma indicação de que um arquivo que carreguei pode estar corrompido ou pelo menos ter um cabeçalho corrompido. A emissão de consultas realistas para a coleção em questão e seus índices retorna resultados que parecem razoáveis. Como posso detectar ou descartar definitivamente "corrupção" desse tipo? O que realmente significa "corrupto" neste contexto? Posso esperar encontrá-lo no banco de dados ou apenas no arquivo zip?

Atualização : por sugestão de @mustaccio, executei gzip -to arquivo problemático e ele relatou "lixo à direita". Isso é suficiente para fixar o problema relatado pelo MongoDB em uma entrada incorreta e parar de procurar por corrupção no banco de dados?

mongodb restore
  • 1 respostas
  • 3989 Views
Martin Hope
WAF
Asked: 2016-07-20 05:35:12 +0800 CST

MySQL: Os resultados da consulta eliminada são armazenados em cache?

  • 0

Se uma consulta for executada a partir da linha de comando do MySQL, então KILLedite-a enquanto estiver em execução, a consulta e seus resultados parciais* estarão no cache de consulta e utilizáveis ​​para execuções subsequentes da consulta idêntica?

Para simplificar, digamos que seja um simples antigo SELECTsem subconsultas.

A lista de exclusões nesta página abrange os casos em que as consultas não serão armazenadas em cache, como a mudança da tabela consultada entre as execuções e certas operações que não são idênticas por natureza, mas não vejo consultas interrompidas ou eliminadas listadas em nenhum lugar. Não deve ser que uma consulta eliminada seja tratada da mesma forma que uma que foi executada até a conclusão, mas se atendesse a todos os outros critérios para armazenamento em cache, ela já estaria armazenada em cache* antes de ser eliminada, então estou me perguntando o que acontecerá a seguir.

MySQL 5.6


* Estou fazendo várias suposições aqui.

mysql query-cache
  • 1 respostas
  • 153 Views
Martin Hope
WAF
Asked: 2015-07-31 07:43:08 +0800 CST

Operador de módulo com não inteiros - resultados inesperados

  • 1

MySQL 5.5.32, Oracle 11g

O MySQL retorna resultados estranhos para consultas envolvendo mod()módulos não inteiros. Por que é isso?

Eu tenho uma coluna definida assim:

+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| col    | double(15,6) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+

Selecionei um valor conhecido dessa coluna para usar no teste - 5850. Se eu consultar a tabela, testando essa coluna para números inteiros, obtenho estes resultados:

mysql> SELECT thing_id,name FROM table WHERE col=5850 AND mod(col,1) != 0;
Empty set (1.07 sec)

Isso é esperado. Mas isso não é:

mysql> SELECT thing_id,name FROM table WHERE col=5850 AND mod(col,.1) != 0;
+-----------+-----------+
| thing_id  | name      |
+-----------+-----------+
|   4444444 | some      |
|   4444445 | names     |
...
|  55555555 | go        |
|  55555556 | here      |
+-----------+-----------+
416 rows in set (1.07 sec)

O mesmo resulta da substituição col MOD .1e col % .1, portanto, tem a ver com o cálculo, não com a semântica.

Compare isso com o comportamento do Oracle (usando o SQL Developer, se isso for importante), onde o tipo de colé NUMBER:

SELECT thing_id,name FROM table WHERE col=5850 AND mod(col,.1) != 0;
thing_id    name
[NO RECORDS]

A precisão na coluna MySQL parece fazer essa diferença, mas não entendo como. Conceitualmente, não deveria integer_value % .1 = 0?

datatypes floating-point
  • 1 respostas
  • 732 Views
Martin Hope
WAF
Asked: 2015-06-24 10:17:50 +0800 CST

MySQL carregando NULLs em colunas numéricas

  • 9

MySQL 5.6.23, InnoDB

Estou carregando tabelas de arquivos de texto delimitados por caracteres usando o LOAD DATA INFILEcomando e gostaria que cada campo com um \N, que é o NULLcaractere nessa configuração, colocasse um NULLna tabela. Alguns tipos numéricos têm esse comportamento, enquanto outros colocam uma extensão 0. Estou usando FIELDS TERMINATED BYe algumas colunas obtêm NULLvalores corretamente, portanto, não é um problema de formato de linha fixa.

Estes são os tipos que observei durante os testes:

  • INTinsere NULLs
  • DECIMAL(x,0)insere NULLs
  • DECIMAL(x,y)insere 0.0s
  • FLOATinsere 0s
  • DOUBLE(x,y)insere 0.0s
  • DOUBLEinsere 0s

Todas as colunas em questão são definidas com DEFAULT NULL. Eu sei que várias funções podem converter esses 0s em NULLs. A questão é se existe um tipo de dados que pode lidar com precisão decimal e também inserir NULLs no carregamento.

Além disso, vejo um monte de perguntas relacionadas ao mal-entendido da diferença entre uma string, uma string vazia e um valor nulo. ( exemplo exemplo exemplo ) Este não é o problema, pois os NULLs estão lá e são carregados corretamente na mesma coluna quando eu o redefino como DECIMAL(x,0) e, incorretamente, quando definido como DECIMAL(x,3).

mysql mysql-5.6
  • 1 respostas
  • 11096 Views

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