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 / Perguntas / 56245
Accepted
Matthew Verstraete
Matthew Verstraete
Asked: 2014-01-07 16:59:14 +0800 CST2014-01-07 16:59:14 +0800 CST 2014-01-07 16:59:14 +0800 CST

É melhor começar com tipos INT menores e crescer conforme necessário?

  • 772

Estou projetando um novo banco de dados SQL para meu aplicativo da Web ASP.net e posso prever que algumas das colunas de ID ficarão muito grandes na necessidade de recursos INT, BIGINTmas isso não acontecerá por alguns anos. Com o Entity Framework no ASP.net, é bastante fácil alterar os tipos de dados da coluna. Então, eu queria saber, do ponto de vista do design e do ponto de desempenho, é melhor começar usando os tipos de colunas menores, como TINYINTe SMALLINTe crescer, INTe BIGINTquando finalmente chegar a hora?

database-design
  • 3 3 respostas
  • 137 Views

3 respostas

  • Voted
  1. Best Answer
    AaronTC05
    2014-01-08T14:00:37+08:002014-01-08T14:00:37+08:00

    Eu sugeriria o tamanho certo de suas colunas desde o início. Você precisa levar em consideração o crescimento esperado dos dados versus a vida útil do aplicativo. Se levar 100 anos para que seus dados inteiros exijam um tipo de dados INT, provavelmente você pode ficar com um SMALLINT se achar que seu aplicativo provavelmente não durará tanto. Se levar apenas alguns anos para chegar lá, seria mais fácil lidar com isso agora, em vez de arriscar uma falha no aplicativo quando o limite superior de SMALLINT for atingido ou correr o risco de esquecer de corrigi-lo quando estiver próximo.

    Caso contrário, seu aplicativo provavelmente falhará em algum momento, provavelmente no meio da noite ou quando você menos esperar! Ou falhará para outra pessoa encarregada de manter seu aplicativo.

    Se os usuários podem conviver com o fato de seu aplicativo estar inativo enquanto você determina que seu tipo de dados excedeu seu tamanho e toma medidas para corrigi-lo, então você pode esperar. Aposto que esse não é um cenário aceitável e você gostaria de manter o tempo de funcionamento do aplicativo o mais próximo possível de 100%.

    Não espere o "algum dia" chegar, acerte hoje!

    • 6
  2. Kondybas
    2014-01-07T17:26:03+08:002014-01-07T17:26:03+08:00

    Em geral, alterar o tipo de campo pode levar algum tempo - dependendo do tamanho da tabela. Índice também reconstruído nesse caso. Em grandes tabelas com milhões de registros, o processo pode demorar um pouco. Penalidades e overheads de bigints não são tão significativos para complicar as coisas.

    • 2
  3. bjnr
    2014-01-08T15:04:57+08:002014-01-08T15:04:57+08:00

    Sugiro usar o bom senso, não ir longe demais e escolher o tipo de dados certo que satisfaça seus requisitos a longo prazo.

    • Se você planeja começar com tinyint=>, isso sugere que sua(s) mesa(s) não aumentará(ão) tão rapidamente. A propósito, você sabia que int no SQL Server significa até 2 ^ 31 (~ 2 bilhões de linhas) ?!

    • É verdade: alterar os tipos de dados posteriormente pode ser difícil.

    • Além disso, um ponto a se pensar é que o tamanho importa para tabelas grandes, mesmo dizendo que você está economizando 4 bytes por linha (=diferença de armazenamento entre inte bigint), você deve pensar na escala:

      10^7 linhas => 0,038 GB salvo

      10^8 linhas => 0,38 GB salvo

      10^9 linhas => 3,8 GB salvos

    Multiplique isso por x locais onde você pode tomar a decisão de usar um bigint em vez de int e veja os resultados ...

    • Um índice clusterizado amplia os índices não clusterizados
    • 1

relate perguntas

  • Os índices filtrados podem ajudar a melhorar as consultas baseadas em uma hora inserida ou isso deve ser evitado?

  • Qual é a diferença entre os tipos de dados MySQL VARCHAR e TEXT?

  • É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]

  • Armazenar vs calcular valores agregados

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

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