Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: access e campi memo

  1. #1

    access e campi memo

    quando si usano i campi memo e si aggiunge un record access alloca su disco molto spazio inutile

    utilizzando la compattazione si recupera questa spazio

    ora, visto che non ho necessità di modificare questi campi dopo l'inserimento, c'è mica un modo per "compattare" al momento dell'inserimento?!

    purtroppo non sono riuscito a trovare niente al momento

    grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    sub compatta_db
    	'Comprimo il database creandone una copia compressa e mantenendo l'originale
    	Dim miodb
    	Set miodb = CreateObject("DAO.DBEngine.36") 
    	miodb.CompactDatabase server.MapPath("/db.mdb"), server.MapPath("/db_tmp.mdb") 
    	Set miodb=Nothing 
    
    	'Elimino il vecchio database (quello originale)
    	Dim objFso, objFile
    	Set objFso=Server.CreateObject("scripting.filesystemobject")
    	Set objFile=objFso.GetFile(server.MapPath("/db.mdb"))
    	objFile.Delete
    	Set objFile = Nothing
    
    	'Rinomino il database temporaneo con il nome di quello originale
    	objFso.MoveFile server.MapPath("/db_tmp.mdb"), server.MapPath("/db.mdb") 
    	Set objFso = Nothing
    end sub
    Lancia la compattazione dopo l'inserimento.
    Anche se io sapevo che non erano i campi memo il problema bensì, dopo una DELETE, la mancata riduzione dello spazio occupato.

    Roby

  3. #3
    Originariamente inviato da Roby_72
    codice:
    sub compatta_db
    	'Comprimo il database creandone una copia compressa e mantenendo l'originale
    	Dim miodb
    	Set miodb = CreateObject("DAO.DBEngine.36") 
    	miodb.CompactDatabase server.MapPath("/db.mdb"), server.MapPath("/db_tmp.mdb") 
    	Set miodb=Nothing 
    
    	'Elimino il vecchio database (quello originale)
    	Dim objFso, objFile
    	Set objFso=Server.CreateObject("scripting.filesystemobject")
    	Set objFile=objFso.GetFile(server.MapPath("/db.mdb"))
    	objFile.Delete
    	Set objFile = Nothing
    
    	'Rinomino il database temporaneo con il nome di quello originale
    	objFso.MoveFile server.MapPath("/db_tmp.mdb"), server.MapPath("/db.mdb") 
    	Set objFso = Nothing
    end sub
    Lancia la compattazione dopo l'inserimento.
    Anche se io sapevo che non erano i campi memo il problema bensì, dopo una DELETE, la mancata riduzione dello spazio occupato.

    Roby

    a questa ci avevo pensato come estrema soluzione

    non conosci altro?! vorrei evitare di far fare lavoro extra

    la delete lascia anche spazio sprecato visto che il record lo marca solo

    con l'inserimento mi spreca circa 4-5 mb per 100 record (a occhio) VVoVe:

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non mi sembra che Access abbia altre funzionalità.

    Roby

  5. #5
    lavoro con access dalla release 1.0 e non ho mai notato tutto questo spreco (e normalmente uso almeno un campo memo in ogni tabella)... come hai 'misurato' l'incremento?

  6. #6
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Originariamente inviato da optime
    lavoro con access dalla release 1.0 e non ho mai notato tutto questo spreco (e normalmente uso almeno un campo memo in ogni tabella)... come hai 'misurato' l'incremento?
    In effetti stavo incominciando a preoccuparmi anch'io....

  7. #7
    Originariamente inviato da diegoctn
    In effetti stavo incominciando a preoccuparmi anch'io....
    sono le solite voci relative alla 'inferiorità' di access mai suffragate da prove scientificamente valide.

  8. #8
    Originariamente inviato da optime
    lavoro con access dalla release 1.0 e non ho mai notato tutto questo spreco (e normalmente uso almeno un campo memo in ogni tabella)... come hai 'misurato' l'incremento?
    misuro la differenza di kilobyte dopo gli inserimenti

    propio adesso ho ricompattato aggiunto una 20-ina di record e mi auementa di 500kb

    c'è la compressione unicode, con o senza indice sul campo cambia poco

    nella tabella ci sono solo campi testo o a lunghezza fissa, ed infatti, togliendo il memo questo aumento di dimensioni non lo registro

  9. #9
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Mi sa che è un problema solo tuo......ho fatto una prova e a me non aumenta nulla ( chiaro che non ho messo dntro la divina commedia...)

  10. #10
    i miei clienti 'tipici' fanno migliaia di operazioni INSERT / UPDATE / DELETE al giorno, e gli faccio ricompattare per sicurezza il db ogni due settimane. db di 50-60 MB si ricompattano di un paio di mb sì e no... se fosse vero quello che dici tu (1/2 mb ogni 20 record) riscontrerei valori ben diversi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.