Domanda

Alcune domande sui database di MS Access -

Dimensione: ci sono limiti alla dimensione di un database di accesso? Il motivo per cui chiedo è che abbiamo un database di accesso che ha alcune semplici tabelle. La dimensione del db è di circa 1 GB. Quando faccio una query su di esso, vedo che impiega più di 10 minuti per l'esecuzione.

Con una corretta indicizzazione, MS Access dovrebbe essere in grado di gestirlo o ci sono limiti fondamentali alla tecnologia.

Questo è MS Access XP.

Inoltre, MS Access supporta transazioni db, commit e rollback?

È stato utile?

Soluzione

Riceverai molte risposte varie qui, ma in MY OPINION l'accesso non è semplicemente una soluzione scalabile. Non gestisce molto bene le situazioni multiutente, quando inizi ad avvicinarti a 1 GB di dimensioni, la stabilità inizia a diventare una preoccupazione PRINCIPALE, e in realtà non ha le prestazioni.

Per quanto riguarda il supporto delle transazioni, vedere questo Microsoft Artic le.

Inoltre, ecco un articolo che indica in realtà una buona maggioranza di limitazioni di accesso .

Altri suggerimenti

In risposta -

Dimensione: la dimensione massima di un database di Access è di 2 GB.

Transazioni: le transazioni sono completamente supportate dal motore di database JET sottostante.

Dall'esperienza passata sono propenso a dire che probabilmente stai raggiungendo la massima dimensione utilizzabile e forse dovresti considerare l'upgrade a SQL Server Express.

Personalmente, ho trovato che il limite 'utilizzabile' era compreso nell'intervallo di duecento megabyte.

L'accesso è progettato e pensato per database di piccole dimensioni. Per quelli grandi, vale a dire quelli oltre a qualcosa che tu e un paio di poche persone state usando, dovreste guardare un "reale" RDBMS come SQL Server, ORacle, DB2, MySQL, ecc.

MODIFICA - vedi http: //www.blueclaw-db .com / vb_transaction_processing.htm per un modo di gestire le transazioni con Access. Apparentemente non è nativo.

La dimensione massima di un database di Access è di 2 GB. Puoi aggirare questo problema utilizzando le tabelle collegate in altri file, ma è probabilmente il momento di utilizzare un database più affidabile se riscontri già problemi di prestazioni.

La mia raccomandazione sarebbe di guardare SQL Server Compact , che è un database gratuito basato su file o, meglio ancora, SQL Server Express , che è un costo gratuito, "lite" versione di SQL Server che supporterà più utenti e l'interoperabilità con SQL Server. Entrambi ti limitano a database da 4 GB.

Tutti i prodotti citati, incluso Access, supportano le transazioni.

Non sono sicuro che siano ancora presenti nella versione XP, ma in Access 97 c'erano opzioni compatte e di riparazione. Se queste sono ancora opzioni, possono essere utili.

Mentre questo risale a molti anni in un momento in cui il costo di entrata in un'installazione di SQL Server era proibitivo come Oracle, uno dei miei clienti stava usando Access per provare a gestire un call center in entrata.

Stiamo parlando di concetti di database VLDB di dimensioni molto grandi 40 milioni di righe. Ciò avvenne durante l'era delle compagnie telefoniche che distribuivano l'ID chiamante e offrivano ai loro abbonati un modo per ricevere un dispositivo ID chiamante gratuito. A causa di violazioni dei costi, hanno dovuto ignorare le mie richieste di investimento in SQL Server.

In pratica sembrava che Access fosse crollato a circa 800 MB. Abbiamo suddiviso le tabelle in più database di Access per gestire il carico. Che ci crediate o no, ha funzionato magnificamente. Il cliente era grato.

In pratica data la disponibilità di SQL Express, anch'io consiglierei di seguire questa strada.

La mia impressione dalla lettura dei newsgroup di Access nel corso degli anni è che il motore ACE / Jet (file .accdb, .mdb o .mde) è raccomandato solo oggi quando si utilizza MS Access come ambiente di sviluppo basato su moduli RAD usando moduli associati. Se non si dispone di un front-end di Access, ci sono alcuni argomenti a favore di un back-end ACE / Jet quando si considerano le alternative molto più scalabili (e capaci): SQL Server Express o SQL Server Compact Edition per negozi MS, MySQL, ecc.

Poiché riapre il supporto delle transazioni nel motore ACE / Jet, sì, è presente e nativo. Un'altra risposta collegata a un articolo sull'uso delle transazioni tramite DAO: notare che molti aspetti di DAO sono limitati perché il suo sviluppo è in ritardo rispetto a quello del motore e le transazioni ne sono un esempio. Fortunatamente, puoi usare SQL DCL: INIZIA TRANSAZIONE, IMPEDI TRANSAZIONE, ROLLBACK TRANSAZIONE, ecc. Per realizzare cose impossibili con DAO, ad es. transazioni nidificate. SQL DCL richiede che l'interfaccia di accesso sia in modalità query ANSI-92; l'utilizzo di ADO funzionerà perché ADO utilizza questa modalità in modo nativo. Per maggiori dettagli, vedi:

Microsoft Jet SQL avanzato per Access 2000

Jet può essere un ottimo archivio dati per qualsiasi numero di piattaforme di sviluppo desktop, non solo con Access stesso. È sempre stata la prima scelta per gli sviluppatori VB e lo è ancora (per una buona ragione).

Un MDB da 1 GB che non dovrebbe crescere molto non dovrebbe essere un problema in termini di velocità o affidabilità. Se è lento, non lo hai indicizzato correttamente o stai scrivendo SQL molto inefficiente. Un esempio di SQL inefficiente sarebbe l'applicazione delle clausole WHERE alle espressioni, che pertanto non possono utilizzare gli indici - un esempio potrebbe essere

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

al contrario di

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

Se stai riscontrando problemi di stabilità (ad es. corruzione ricorrente), questo è un problema che deve essere affrontato - di solito è dovuto a errore umano, problemi hardware o software (come il software AV che interferisce con le operazioni interne di scrittura Jet) .

Ma il fattore determinante è la velocità di crescita dell'MDB. Se estrapoli il tasso di crescita storico e ti avvicini ai 2 GB entro 5 anni, direi che presto dovrai effettuare l'upgrade. Se sono più o meno 10 anni, probabilmente dovresti farlo comunque. Se sono 20 anni, quindi, non così tanto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top