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

Michael McGowan's questions

Martin Hope
Michael McGowan
Asked: 2013-01-22 07:25:11 +0800 CST

Existe uma maneira padrão de substituir códigos por valores de uma tabela de pesquisa para relatórios ou análises?

  • 4

Suponha que eu tenha uma tabela "principal" que provavelmente foi fortemente normalizada e consiste em grande parte de colunas que apenas contêm códigos que são pesquisas em outras tabelas (provavelmente são chaves estrangeiras, mas sinta-se à vontade para não assumir isso em sua resposta, se fizer sentido). Por exemplo, talvez esta tabela principal seja uma lista de pessoas e uma das colunas seja para favorite_color. Claro que então nossa tabela de pesquisa ficaria mais ou menos assim:

color_cd    color_name
0           Unknown
1           Red
2           Blue
3           Orange
4           Other

Agora, se estou criando relatórios a partir desta tabela principal ou talvez alimentando esses dados em algum software para especialistas de domínio usarem, prefiro substituir o favorite_colorcódigo pelo color_nameda tabela de pesquisa. Uma solução, claro, é fazer isso com um simples JOIN no meu SELECT:

SELECT main.col1, main.col2, colors.color_name as `Favorite Color` 
  FROM main LEFT OUTER JOIN colors ON (main.favorite_color = colors.color_cd);

Isso faz o trabalho. Agora suponha que a tabela principal tenha dezenas ou talvez centenas dessas colunas e milhões de linhas. Algumas das tabelas de pesquisa são pequenas, como no exemplo acima, mas outras podem ter centenas ou milhares de valores.

Existe algum tipo de maneira padrão de fazer essa transformação ou a escrita é longa com dezenas ou centenas de junções? Esse tipo de coisa é um componente típico de qualquer produto ETL? É preferível escrever um script que lide com isso sem junções e fora do SQL? Por favor, perdoe o que são prováveis ​​alguns abusos ou mau uso da terminologia; Eu nem tenho certeza se o processo acima tem um nome.

performance join
  • 1 respostas
  • 1478 Views
Martin Hope
Michael McGowan
Asked: 2012-01-15 10:56:20 +0800 CST

Tabelas separadas ou particionar uma tabela enorme?

  • 4

Estou construindo uma tabela bastante grande que inclui uma coluna específica, my_column. Há um pequeno número de valores possíveis para my_column, e cada valor exclusivo de my_columndeve ter o mesmo número de linhas associadas a ele. Além disso, é provável que as consultas sejam focadas apenas em um único valor específico de my_columncada vez. Vejo que uma opção seria particionar essa tabela grande com base nos valores de my_column. A outra opção, a meu ver, seria criar uma tabela totalmente separada, de modo que cada tabela se associe exatamente a um valor de my_column. Eu gostaria de saber o que me levaria a escolher uma opção em detrimento da outra.

Pelo que entendi, uma tabela grande particionada parece ser a maneira "correta" ou "pura" de fazer isso, pois esse parece ser o principal caso de uso para partições. No entanto, suspeito que, por razões práticas, a segunda opção seja melhor, e é para isso que estou inclinado. Não sei se isso importa, mas estou lidando com tabelas MyISAM.

mysql database-design
  • 2 respostas
  • 4283 Views
Martin Hope
Michael McGowan
Asked: 2012-01-04 16:07:24 +0800 CST

Posso especificar um disco diferente para uma tabela MySQL específica?

  • 3

Eu uso minha máquina doméstica como meu banco de dados pessoal para meu projeto de análise de hobby. Esta máquina possui um SSD para a unidade principal onde o MySQL armazena seus dados. Ele também possui um disco rígido secundário maior e não um SSD. Estou prestes a criar uma tabela que temo ser muito grande para caber no meu SSD; é possível armazenar essa tabela na unidade maior (mas mais lenta)? Se for importante, geralmente estou usando tabelas MyISAM, mas posso ser persuadido a usar o InnoDB se isso ajudar.

mysql windows
  • 4 respostas
  • 7694 Views
Martin Hope
Michael McGowan
Asked: 2011-03-28 11:47:38 +0800 CST

Por que o MySQL diz que estou sem memória?

  • 10

Eu estava tentando executar um bastante grande INSERT...SELECTno MySQL com JDBC e recebi a seguinte exceção:

Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

Como não estou retornando um objeto ResultSet, pensei que o espaço de heap Java não deveria ser um problema. No entanto, tentei aumentar de qualquer maneira e não adiantou. Tentei então executar a instrução no MySQL Workbench e obtive essencialmente a mesma coisa:

Error Code 5: Out of memory (Needed 1073741816 bytes)

Devo ter bastante RAM para concluir essas operações (o suficiente para caber em toda a tabela da qual estou selecionando), mas acho que há várias configurações que preciso ajustar para aproveitar toda a minha memória. Estou executando uma instância extragrande dupla de alta memória do Amazon EC2 com uma AMI do Windows Server 2008. Tentei mexer no arquivo my.ini para usar configurações melhores, mas, pelo que sei, posso ter piorado as coisas. Aqui está um dump desse arquivo:

[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
character-set-server=latin1
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=1024M
table_cache=256
tmp_table_size=25G
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_repair_threads = 2
myisam_sort_buffer_size=10G
key_buffer_size=5000M
bulk_insert_buffer_size = 4000M
read_buffer_size=8000M
read_rnd_buffer_size=8000M
sort_buffer_size=1G
innodb_additional_mem_pool_size=26M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=13M
innodb_buffer_pool_size=23G
innodb_log_file_size=622M
innodb_thread_concurrency=18
innodb_file_per_table=TRUE
join_buffer_size=4G
max_heap_table_size = 10G

Então, isso é apenas uma questão de alterar as configurações acima para funcionar melhor no meu ambiente? Se sim, quais configurações devo usar? Eu sou o único que usa essa instância; Eu o uso para meu projeto de hobby pessoal que envolve análise estatística de grandes conjuntos de dados. Como tal, estou livre para deixá-lo consumir todos os recursos disponíveis para minhas próprias consultas.

Se não for uma questão de alterar essas configurações, qual é o problema? Obrigado por qualquer ajuda que você possa oferecer sobre como configurar melhor tudo.

mysql windows
  • 4 respostas
  • 46674 Views
Martin Hope
Michael McGowan
Asked: 2011-03-20 22:27:29 +0800 CST

Quais são as razões **NÃO** para usar o mecanismo de armazenamento MEMORY no MySQL?

  • 35

Recentemente descobri que o MySQL tem um mecanismo de "memória" que eu não conhecia (a maior parte do meu trabalho de banco de dados é para projetos de hobby, então aprendo o que preciso à medida que prossigo). Parece que essa opção deve me dar um desempenho drasticamente melhorado, então estou me perguntando se há alguma desvantagem relacionada a ela. Os dois que eu conheço são:

  1. Eu preciso ter memória RAM suficiente para manter a(s) tabela(s) em questão.
  2. As tabelas são perdidas se a máquina for desligada.

Acredito que o número 1 não deve ser um problema, pois estou usando o AWS EC2 e posso mudar para um tipo de instância com mais memória, se necessário. Acredito que posso mitigar o nº 2 despejando de volta no disco conforme necessário.

Que outras questões existem? O mecanismo de memória pode ter um desempenho pior do que o MyISAM ou o InnoDB? Acho que li algo que os índices são diferentes com este motor; isso é algo que eu preciso me preocupar?

mysql storage-engine
  • 7 respostas
  • 50298 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