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
James
Asked: 2013-12-04 04:56:55 +0800 CST

PostgreSQL selecionando campos vazios do tipo inteiro

  • 15

Tenho uma tabela e preciso selecionar todas as linhas com valor vazio para o fk_fc_idcampo (como prelúdio para excluí-las),

    Column     |            Type             |                         Modifiers
---------------+-----------------------------+------------------------------------------------------------
 di_timestamp  | timestamp without time zone |
 di_item_value | character varying(10)       |
 fk_fc_id      | integer                     |
 di_id         | integer                     | not null default nextval('data_item_di_id_seq1'::regclass)

No entanto, isso não funciona,

# select fk_fc_id,di_timestamp,di_item_value from data_item where fk_fc_id="";
ERROR:  zero-length delimited identifier at or near """"
LINE 1: ...di_timestamp,di_item_value from data_item where fk_fc_id="";
                                                                    ^

Tentar Nulltambém não funciona.

Se alguém tiver alguma sugestão de como resolver isso, ficarei muito grato.

postgresql
  • 2 respostas
  • 71039 Views
Martin Hope
alice
Asked: 2013-11-24 21:50:58 +0800 CST

Selecione as linhas seguinte e anterior

  • 15

Tenho a seguinte tabela:

CREATE TABLE post (
  id            bigint primary key,
  thread_id     bigint,
  is_notice     boolean,
  title         text,
  content       text
)

Eu exponho a lista usando a seguinte consulta:

SELECT * FROM post ORDER BY is_notice desc, thread_id desc, id

Então, dado o post selecionado por id(ie SELECT * FROM post where id=3), como eu recupero os posts seguintes e anteriores?

postgresql select
  • 1 respostas
  • 27925 Views
Martin Hope
Lawtonfogle
Asked: 2013-09-28 05:40:34 +0800 CST

Compartilhando uma única sequência de chave primária em um banco de dados?

  • 15

É uma prática aceitável usar uma única sequência como chave primária em todas as tabelas (em vez de uma chave primária ser exclusiva para uma determinada tabela, ela é exclusiva para todas as tabelas)? Em caso afirmativo, é objetivamente melhor do que usar uma única sequência de chave primária nas tabelas.

Sou um desenvolvedor de software júnior, não um DBA, então ainda estou aprendendo muitos dos fundamentos de um bom projeto de banco de dados.

Editar: caso alguém esteja se perguntando, li recentemente uma crítica de um design de banco de dados por um dos DBAs de nossa empresa, que mencionou que era um problema que o design não usasse uma única chave primária em todo o banco de dados, o que parecia diferente do que Eu aprendi até agora.

Edit2: Para responder a uma pergunta nos comentários, isso é para Oracle 11g, mas eu estava pensando em um nível não específico de banco de dados. Se esta questão dependesse do banco de dados, eu estaria interessado em saber o porquê, mas nesse caso eu estaria procurando uma resposta específica para o Oracle.

database-design primary-key
  • 5 respostas
  • 14660 Views
Martin Hope
Paul
Asked: 2013-09-19 04:54:59 +0800 CST

Quando a detecção de página rasgada e a soma de verificação foram introduzidas no SQL Server e quais são os comportamentos de atualização?

  • 15

Existem duas opções diferentes no SQL Server moderno para verificação de página; sendo detecção de página rasgada e soma de verificação . Nenhum também é, obviamente, uma opção.

Acredito que Checksum foi introduzido no SQL Server 2005 e que atualizar ou restaurar um banco de dados de uma versão anterior manteria seu método de verificação de página anterior. ou seja, não houve atualização implícita.

O problema envolvido é que temos um banco de dados de produção que entrou em produção usando o SQL Server 2000 e, desde então, mudou para um servidor SQL Server 2008 R2. A verificação de página está definida como Nenhuma quando eu esperava que fosse Detecção de página rasgada . Voltando a esse período de tempo, parece que o banco de dados foi originalmente desenvolvido no SQL Server 7.0 e depois migrou para o SQL Server 2000 e isso pode explicar o resultado observado.

Eu queria saber quando Torn Page Detection e Checksum se tornaram um recurso do SQL Server e como eles se comportaram quando migrados ou atualizados para versões mais recentes.

Edit: Resumindo algumas das respostas:

Há uma pequena discrepância sobre algumas das datas de quando a Detecção de página rasgada entrou no SQL Server.
Link 1: http://support.microsoft.com/kb/230785
Link 2: http://technet.microsoft.com/en-us/library/aa337525(v=sql.90).aspx

O primeiro link indica SQL 7.0 e o segundo SQL2000. Costumo colocar minha fé na sugestão do SQL7.0 e esse link dois estava confuso por estar desativado por padrão no SQL7.0 e ativado por padrão no SQL2000.

sql-server
  • 4 respostas
  • 8113 Views
Martin Hope
James Wise
Asked: 2013-09-17 20:11:21 +0800 CST

Comando MySQL consultando todo o banco de dados MyISAM

  • 15

Eu apreciaria se alguém pudesse me ajudar sobre qual é o comando adequado no MySQL para consultar todo o banco de dados por ter o mecanismo "MyISAM". Eu preciso converter todos os bancos de dados e tabelas de MyISAM para InnoDB.

mysql innodb
  • 1 respostas
  • 11756 Views
Martin Hope
Cratylus
Asked: 2013-08-14 10:06:18 +0800 CST

Por que o MySQL ignora o índice mesmo em vigor para esta ordem?

  • 15

Eu corro um EXPLAIN:

mysql> explain select last_name from employees order by last_name;
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
| id | select_type | table     | type | possible_keys | key  | key_len | ref  | rows  | Extra          |
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
|  1 | SIMPLE      | employees | ALL  | NULL          | NULL | NULL    | NULL | 10031 | Using filesort |
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
1 row in set (0.00 sec)  

Os índices da minha tabela:

mysql> show index from employees;  
+-----------+------------+---------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+  
| Table     | Non_unique | Key_name      | Seq_in_index | Column_name   | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |  
+-----------+------------+---------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+  
| employees |          0 | PRIMARY       |            1 | subsidiary_id | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |  
| employees |          0 | PRIMARY       |            2 | employee_id   | A         |       10031 |     NULL | NULL   |      | BTREE      |         |               |  
| employees |          1 | idx_last_name |            1 | last_name     | A         |       10031 |      700 | NULL   |      | BTREE      |         |               |  
| employees |          1 | date_of_birth |            1 | date_of_birth | A         |       10031 |     NULL | NULL   | YES  | BTREE      |         |               |  
| employees |          1 | date_of_birth |            2 | subsidiary_id | A         |       10031 |     NULL | NULL   |      | BTREE      |         |               |  
+-----------+------------+---------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+  
5 rows in set (0.02 sec)  

Existe um índice em last_name mas o otimizador não o utiliza.
Então eu faço:

mysql> explain select last_name from employees force index(idx_last_name) order by last_name;  
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
| id | select_type | table     | type | possible_keys | key  | key_len | ref  | rows  | Extra          |  
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
|  1 | SIMPLE      | employees | ALL  | NULL          | NULL | NULL    | NULL | 10031 | Using filesort |  
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+  
1 row in set (0.00 sec)  

Mas ainda assim o índice não é usado! O que eu estou fazendo errado aqui?
Tem a ver com o fato de o índice ser NON_UNIQUE? BTW o last_name éVARCHAR(1000)

Atualização solicitada por @RolandoMySQLDBA

mysql> SELECT COUNT(DISTINCT last_name) DistinctCount FROM employees;  
+---------------+  
| DistinctCount |  
+---------------+  
|         10000 |  
+---------------+  
1 row in set (0.05 sec)  


mysql> SELECT COUNT(1) FROM (SELECT COUNT(1) Count500,last_name FROM employees GROUP BY last_name HAVING COUNT(1) > 500) A;  
+----------+  
| COUNT(1) |  
+----------+  
|        0 |  
+----------+  
1 row in set (0.15 sec)  
mysql innodb
  • 3 respostas
  • 33726 Views
Martin Hope
lamp_scaler
Asked: 2013-07-27 00:20:49 +0800 CST

Por que os arquivos de log do MySQL ainda existem após uma limpeza ou liberação?

  • 15

Eu usei PURGE BINARY LOGS assim como FLUSH LOGS, mas o diretório mysql ainda contém estes arquivos:

mysql-bin.000025
mysql-bin.000024
mysql-bin.000023
mysql-bin.000022
mysql-bin.000021
mysql-bin.000020
mysql-bin.000019
mysql-bin.index

Existe uma razão pela qual o uso dos comandos não está funcionando? Esses arquivos estão ocupando muito espaço. Eu gostaria de me livrar deles com segurança.

mysql binlog
  • 5 respostas
  • 48406 Views
Martin Hope
Andrei Orlov
Asked: 2013-06-28 07:57:35 +0800 CST

Como evito bloqueios de banco de dados SQLite?

  • 15

De FAQ do SQLite, eu sabia que:

Vários processos podem ter o mesmo banco de dados aberto ao mesmo tempo. Vários processos podem estar fazendo um SELECTao mesmo tempo. Mas apenas um processo pode fazer alterações no banco de dados a qualquer momento.

Então, até onde eu entendo eu posso: 1) Ler db de vários threads ( SELECT) 2) Ler db de vários threads ( SELECT) e escrever de um único thread ( CREATE, INSERT, DELETE)

Mas, eu li sobre o Write-Ahead Logging que fornece mais simultaneidade, pois os leitores não bloqueiam os escritores e um escritor não bloqueia os leitores . A leitura e a escrita podem ocorrer simultaneamente.

Finalmente, fiquei completamente confuso quando o encontrei , quando especificado:

Aqui estão outros motivos para obter um erro SQLITE_LOCKED:

  • Tentando CREATEou DROPuma tabela ou índice enquanto uma SELECTinstrução ainda está pendente.
  • Tentando gravar em uma tabela enquanto a SELECTestá ativo nessa mesma tabela.
  • Tentando fazer dois SELECTna mesma tabela ao mesmo tempo em um aplicativo multithread, se o sqlite não estiver definido para isso.
  • A chamada fcntl(3,F_SETLK no arquivo DB falha. Isso pode ser causado por um problema de bloqueio NFS, por exemplo. Uma solução para esse problema é remover o banco de dados e copiá-lo de volta para que ele tenha um novo valor Inode

Então, gostaria de esclarecer para mim mesmo, é necessário evitar o bloqueio? Posso ler e escrever ao mesmo tempo em dois tópicos diferentes? Obrigado.

sqlite locking
  • 1 respostas
  • 60558 Views
Martin Hope
rzuech
Asked: 2013-06-28 07:32:19 +0800 CST

O fornecedor deseja executar o trabalho do MSDB a cada 5 minutos para o aplicativo de negócios

  • 15

Temos um fornecedor terceirizado tentando integrar 2 aplicativos diferentes em que ambos os bancos de dados residem em nossa instância do SQL Server com mais de 150 outros bancos de dados e eles desejam criar um trabalho MSDB para "sincronizar" os 2 aplicativos diferentes a cada 5 minutos (no início, eles queria executá-lo a cada minuto).

Meu palpite inicial é que eles deveriam fazer isso de alguma forma na camada do aplicativo com um trabalho agendado do Windows, ou talvez até mesmo um gatilho temido (ao qual normalmente recorremos em situações como essa).

Eu prefiro manter os trabalhos MSDB reservados para tarefas DBA tanto quanto possível para reduzir a confusão lá, e também me deparei com consultas lentas do MSDB ao visualizar históricos de trabalhos com trabalhos superativos como este (que também afogam e eliminam históricos de trabalhos importantes de coisas mais importantes, como históricos de backup). Mas, novamente, talvez minhas preferências estejam erradas e eu precise abrir espaço para a camada de aplicativos no MSDB, arregaçar as mangas e corrigir problemas de históricos de trabalho que demoram uma eternidade para carregar quando preciso reter muito mais entradas de histórico para capturar o coisas importantes como backups (ou limpar as entradas de trabalho hiperativas).

Outro problema que tenho é que agora preciso dar a este fornecedor direitos de "sysadmin" em vez de apenas direitos de "dbo" apenas em seus bancos de dados quando eles executam suas atualizações por meio de sua GUI e espero que eles não explodam a instância onde minha missão crítica Os bancos de dados são (uma das desvantagens da consolidação).

Acho que posso colocá-los em outra instância "isolada" onde colocamos todos os fornecedores que não jogam bem, mas então precisamos reconfigurar os aplicativos para apontar para a nova instância SQL ( suspiro infelizmente não é trivial neste caso).

O fornecedor já rejeitou minhas preocupações falando sobre como os gatilhos são ruins. Então, eu "pesquisei" um pouco sobre isso e não encontrei nada. Alguém viu algum link por aí com "aparência autoritária" que isso é uma má ideia e eu posso encaminhá-lo para ele? Ou devo abraçar a abordagem deles?

Acho que nunca postei em um fórum de sql antes de pedir ajuda, então espero que minha pergunta esteja devidamente enquadrada.

EDIT: Estamos executando o SQL Server 2008 Enterprise R2 x64 SP1 (obrigado por apontar que esqueci de mencionar a versão!). Hmmm, esperamos que eles não precisem alterar seus scripts de atualização do MSDB quando formos para uma versão mais recente.

Obrigado pelo seu tempo! Rico

sql-server sql-server-2008-r2
  • 2 respostas
  • 1511 Views
Martin Hope
HamTheAstroChimp
Asked: 2013-06-07 00:31:51 +0800 CST

A mesa está marcada como travada e deve ser reparada

  • 15

Tenho MySQL e Nagios instalados Linux PC (Centos5.5)

Eu escrevi algum script para buscar os dados do Nagios para o Mysql DB (exatamente buscar dados na tabela)

A busca de dados funcionando corretamente (confirmado com 'COUNT' cmd)

O problema quando executo o seguinte comando é um erro como abaixo,

mysql> selecione * de nagios_servicechecks;

ERRO 1194 (HY000): A tabela 'nagios_servicechecks' está marcada como travada e deve ser reparada

Exceto este comando, todos os outros comandos funcionam bem.

mysql linux
  • 2 respostas
  • 41600 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