Pergunta

Algumas perguntas sobre bancos de dados MS Access -

Tamanho: Há limites para o tamanho de um banco de dados de acesso? A razão que eu peço é que nós temos um banco de dados de acesso que tem algumas mesas simples. O tamanho do db é de cerca de 1 GB. Quando eu faço uma consulta sobre ele, eu vê-lo tomar mais de 10 minutos para ser executado.

Com a indexação adequada, deve MS Access ser capaz de lidar com isso ou há limitações fundamentais para a tecnologia.

Esta é MS Access XP.

Além disso, faz transações db apoio MS Access, cometer e reversão?

Foi útil?

Solução

Você vai ter muitas respostas variadas aqui, mas na minha opinião o acesso não é apenas lá como uma solução escalável. Ele não lida com situações de multi-usuário muito bem, como você começa a aproximar-se 1GB de tamanho, começa estabilidade para se tornar uma preocupação maior, e, na realidade, só não tem o desempenho.

No que diz respeito ao suporte de transações, consulte este Microsoft Artic le.

Além disso, aqui é um artigo que realmente chama a atenção para uma boa maioria de limitações de acesso .

Outras dicas

Em resposta -

Tamanho: O tamanho máximo de um banco de dados é de 2GB.

Transações:. Transações são totalmente suportados pelo mecanismo de banco de dados JET subjacente

A experiência do passado eu estou inclinado a dizer que provavelmente você está atingindo o tamanho máximo utilizável e devem talvez considerar upsizing para SQL Server Express.

Pessoalmente, eu encontrei o limite 'utilizável' para estar na faixa megabyte par cem.

O acesso é projetado e destinado a pequenos bancos de dados. Para as grandes, ou seja, aqueles além de apenas algo que você e um povo casal-poucos estão usando, você deve estar olhando para um RDBMS "reais" como SQL Server, Oracle, DB2, MySQL, etc.

Editar - veja http: //www.blueclaw-db .com / vb_transaction_processing.htm uma maneira de lidar com transações com o Access. Aparentemente, não é nativa.

O tamanho máximo de um banco de dados é de 2GB. Você pode contornar isso usando tabelas vinculadas em outros arquivos, mas provavelmente é hora de usar um banco de dados mais robusto, se você já está experimentando problemas de desempenho.

A minha recomendação seria a de olhar em SQL Server Compact , que é um não-custo, banco de dados baseado em arquivo ou, ainda melhor, SQL Server Express , que é um sem custo, versão "lite" do SQL Server que irá suportar múltiplos usuários e interoperabilidade com SQL Server. Ambos limite que a bases de dados de 4GB.

Todos os produtos mencionados, incluindo Access, as operações de apoio.

Eu não tenho certeza se eles ainda estão lá na versão XP, mas no Access 97, havia opções compactas e reparação. Se estes ainda são opções, eles podem ajudar.

Enquanto isso está acontecendo há muitos anos no momento em que o custo de entrada em uma instalação SQL Server era tão proibitivos como Oracle, um dos meus clientes estava usando Acesso para tentar gerir um centro de chamada de entrada.

Estamos falando de VLDB-muito grandes conceitos de banco de dados de 40 milhões de linhas. Isso foi durante a era das empresas de telefonia lançando identificador de chamadas e oferecendo aos seus assinantes uma maneira de receber um dispositivo identificador de chamadas grátis. Devido a constrangimentos de custo tiveram que ignorar meus pedidos para fazer o investimento SQL Server.

Na prática, parecia que o Access derrubado em cerca de 800MB. Nós particionado tabelas em vários bancos de dados de acesso para lidar com a carga. Acredite ou não, funcionou lindamente. O cliente estava grato.

Na prática, dada a disponibilidade do SQL Express, também eu recomendo ir por esse caminho.

A minha impressão ao ler os newsgroups de acesso ao longo dos anos é que o motor ACE / Jet (.accdb, .mdb ou ficheiro.mde) só é recomendada hoje em dia quando se usa MS Access como um ambiente de desenvolvimento baseado em formas RAD usando formulários vinculados. Se você não tem um front-end Acesso em seguida, há alguns argumentos em favor de uma extremidade traseira ACE / Jet quando se consideram os mais escaláveis ??(e capazes) alternativas: SQL Server Express ou SQL Server Compact Edition para lojas de MS, MySQL, etc.

Como reagrds suporte a transações no motor ACE / Jet, sim, é presente e nativa. Outra resposta ligada a um artigo sobre o uso de transações via DAO: nota que muitos aspectos do DAO são limitados porque suas defasagens de desenvolvimento que do motor e transações é um exemplo. Felizmente, você pode usar SQL DCL: BEGIN TRANSACTION, COMMIT TRANSACTION, ROLLBACK TRANSACTION, etc para as coisas acomplish não é possível com DAO por exemplo transações aninhadas. SQL DCL requer a interface de acesso para a ANSI-92 Consulta Modo; usando ADO vai funcionar porque ADO usa este modo nativamente. Para mais detalhes, consulte:

Avançada Microsoft Jet SQL para o Access 2000

Jet pode ser um armazenamento de dados muito bom para qualquer número de plataformas de desenvolvimento de desktop, não apenas com a própria Access. Sempre foi uma primeira escolha para desenvolvedores VB e ainda é (por uma boa razão).

A 1GB MDB que não é esperado para crescer muito não deve ser um problema em termos de velocidade ou confiabilidade. Se ele é lento, então você não indexado-lo direito, ou você está escrevendo SQL muito ineficiente. Um exemplo de SQL ineficiente seria aplicar cláusulas WHERE para expressões, que, portanto, não pode usar índices - um exemplo seria

WHERE Year([MyTable].[MyDate]) = 2002

em oposição a

WHERE MyTable.MyDate Between #1/1/2002# And #12/31/2002#

Se você está tendo problemas de estabilidade (ou seja, corrupção recorrente), que é um problema que precisa ser abordado - é geralmente devido a erro humano, problemas de hardware ou problemas de software (como o software AV interferindo com as operações de gravação Jet interna) .

Mas a chave determinante é o quão rápido o MDB está crescendo. Se você extrapolar a taxa de crescimento histórico e aproximar 2GBs dentro de 5 anos, eu diria que você precisa para converter em breve. Se ele é mais parecido com 10 anos, você provavelmente deve fazê-lo de qualquer maneira. Se é 20 anos, então, não tanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top