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-630

gbn's questions

Martin Hope
gbn
Asked: 2011-12-24 02:09:53 +0800 CST

Exibir atualização de metadados no MySQL

  • 2

Como outros RDBMS, os metadados de visualização são armazenados no momento da criação da visualização.

De CREATE VIEWnos documentos do MySQL

A definição da visualização é “congelada” no momento da criação, portanto, as alterações posteriores nas tabelas subjacentes [sic] não afetam a definição da visualização.

Não consigo ver uma maneira de atualizar esses metadados de exibição de forma limpa, ao contrário de outros RDBMS:

  • Servidor SQL:EXEC sp_refreshview 'MyView'
  • Oráculo:ALTER VIEW MyView COMPILE

O sistema aqui parece ser "faça isso manualmente" com DROP/CREATE, que não é meu estilo. A multidão habitual que faz esse processo manual está de licença, então cabe a mim esta semana.

Também não tenho um lacaio para indicar: então, qualquer solução, por favor...

mysql view
  • 1 respostas
  • 2169 Views
Martin Hope
gbn
Asked: 2011-11-12 02:16:04 +0800 CST

Anomalia agregada do MySQL

  • 5

Eu estava verificando a seletividade de algumas colunas para um índice.
Onde está documentado esse comportamento de "ignore o que eu lhe dou"?

Isso dá 4.851.908, 4.841.060 e 1.000.052

SELECT
     COUNT(*), 
     COUNT(DISTINCT Col1), COUNT(DISTINCT Col2)
FROM Sometable;

Isso dá 4.843.634 pares únicos de acordo com a extensão do MySQL

SELECT COUNT(DISTINCT Col1, Col2) FROM Sometable

O seguinte está errado: o COUNT(DISTINCT colx) individual fornece a contagem de pares exclusivos de 4.843.634, independentemente de qualquer coluna de preenchimento ou ordem de expressão.

Eu esperava COUNT(DISTINCT Col1) = 4,841,060, e COUNT(DISTINCT Col1) = 1,000,052.

SELECT COUNT(DISTINCT Col1), COUNT(DISTINCT Col2) FROM Sometable

SELECT COUNT(DISTINCT Col2), COUNT(DISTINCT Col1) FROM Sometable

SELECT COUNT(DISTINCT Col1), 1 AS Filler, COUNT(DISTINCT Col2) FROM Sometable

Mas isso fornece valores corretos novamente com outro agregado (como COUNT(*)acima)

SELECT COUNT(DISTINCT Col1), MAX(col1) AS Filler, COUNT(DISTINCT Col2) FROM Sometable

Dúvidas, caso não tenha ficado claro:

  • Por que COUNT(DISTINCT Col1), COUNT(DISTINCT Col2)se comporta comoCOUNT(DISTINCT Col1, Col2)
  • Por que outro agregado é necessário para fazê-lo funcionar?
mysql aggregate
  • 2 respostas
  • 295 Views
Martin Hope
gbn
Asked: 2011-09-15 05:02:47 +0800 CST

Funções equivalentes no MySQL que existem no SQL Server

  • 4

Em um bloco EXIT HANDLER, quais são os equivalentes MySQL de

  • OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
  • ERROR_MESSAGE()

Editar

O que eu quero fazer. No SQL Server eu teria

CREATE PROC ...
AS
SET NOCOUNT, XACT_ABORT ON;

BEGIN TRY
 ...
END TRY
BEGIN CATCH
   ROLLBACK etc
   EXEC someGenericProc @@PROCID, @errmsg OUTPUT;
   RAISERROR ( @errmsg, 16, 1);
END CATCH
GO

CREATE PROC someGenericProc
   @LoggingProcID int
AS
..
SELECT
    @LoggingObject = OBJECT_SCHEMA_NAME(@LoggingProcID ) + '.' + OBJECT_NAME(@LoggingProcID),
    @ErrorObject = ERROR_PROCEDURE(),
    @ErrorMessage = ERROR_MESSAGE();

-- some processing to deal with nesting etc

INSERT SomeErrorTable (...)
VALUES (@LoggingObject, @ErrorObject, @ErrorMessage)
...
GO

Felicidades

mysql error-handling
  • 1 respostas
  • 18385 Views
Martin Hope
gbn
Asked: 2011-09-13 06:59:54 +0800 CST

Possível fazer o MySQL usar mais de um núcleo?

  • 142

Fui presenteado com alguns servidores MySQL dedicados que nunca usam mais do que um único núcleo. Eu sou mais desenvolvedor do que DBA para MySQL, então preciso de ajuda

Configurar

Os servidores são bastante robustos com uma carga do tipo OLAP/DataWarehouse (DW):

  • Primário: 96 GB de RAM, 8 núcleos + matriz RAID 10 única
  • Teste: 32 GB de RAM com 4 núcleos
  • O maior banco de dados é de 540 GB, o total é de cerca de 1,1 TB e principalmente tabelas InnoDB
  • Solaris 10 Intel-64
  • MySQL 5.5.x

Nota: O maior DB é o replicado do servidor OLTP DR e o DW é carregado a partir dele. Não é um DW completo: dura apenas 6 meses a 6 semanas, por isso é menor que o OLTP DB.

Observações em um servidor de teste

  • 3 conexões separadas
  • cada um tem um concorrente (e diferente)ALTER TABLE...DROP KEY...ADD INDEX
  • as 3 tabelas têm 2,5, 3,8 e 4,5 milhões de linhas
  • O uso da CPU vai até 25% (um núcleo está no máximo) e não mais
  • os 3 ALTERs levam de 12 a 25 minutos (um único no menor leva 4,5)

Perguntas

  1. Qual configuração ou patch é necessário para permitir que mais de um núcleo seja usado?
    Ou seja, por que o MySQL não usa todos os núcleos disponíveis? (como outros RDBMS)
  2. É uma consequência da replicação?

Outras notas

  • Eu entendo a diferença entre um "thread" de RDBMS e um "thread" de SO
  • Eu não estou perguntando sobre qualquer forma de paralelismo
  • Algumas das variáveis ​​do sistema para InnoDB e threads são sub-ótimas
    (procurando uma vitória rápida)
  • A curto prazo, não consigo alterar o layout do disco
  • O SO pode ser ajustado, se necessário
  • Uma única ALTER TABLE na menor mesa leva 4,5 minutos (chocante IMO)

Editar 1

  • innodb_thread_concurrency é definido como 8 em ambos. Sim, está errado, mas não fará o MySQL usar vários núcleos
  • innodb_buffer_pool_size é 80 GB no primário, 10 GB em um teste (outra instância é encerrada). Isso está bem por enquanto.
  • innodb_file_per_table = ATIVADO

Editar 2

  • innodb_flush_log_at_trx_commit = 2
  • innodb_use_sys_malloc = ATIVADO
  • innodb_flush_method deve ser O_DIRECT (mas SHOW VARIABLES não mostra isso)
  • innodb_doublewrite = OFF
  • Sistema de arquivos = ZFS (E meu sysadmin encontrou isto: http://blogs.oracle.com/realneel/entry/mysql_innodb_zfs_best_practices )

Testar

  • innodb_flush_method não está aparecendo como O_DIRECT quando deveria estar
  • seguirá as configurações do RolandoMySQLDBA

Deixe-me saber se eu perdi alguma coisa importante

Felicidades

Atualizar

Alterado innodb_flush_method + 3 x configurações de thread na resposta do RolandoMySQLDBA
Resultado: > 1 núcleo usado para os testes = resultado positivo

mysql performance
  • 5 respostas
  • 237464 Views
Martin Hope
gbn
Asked: 2011-02-21 09:33:37 +0800 CST

SQL Server: grupo de arquivos apenas para tabelas do sistema?

  • 12

Um de nossos padrões corporativos é ter um grupo de arquivos/arquivo separado para tabelas/índices de usuários. Isso é definido como padrão, portanto, não há necessidade de qualificar as instruções CREATE TABLE.

Então parece com isso

  • fileid 1 = tabelas do sistema, MDF
  • fileid 2 = t-log = LDF
  • fileid 3 = coisas do usuário = NDF

Alguém aqui pode me ajudar a entender a justificativa original por que isso foi obrigatório?


Vou confessar e dizer que acho que é vodu. Estou errado... ?

Editar: estou ciente de como usar grupos de arquivos para separação de índices/partições/arquivos, bem como restaurar fragmentos. Esta questão é sobre o uso de um grupo de arquivos separado no mesmo volume apenas para tabelas do sistema.

sql-server filegroups
  • 3 respostas
  • 1540 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