01. februar 2005 - 18:04Der er
15 kommentarer og 1 løsning
Ideer til program, der kan finde ud af udnyttelsesgraden af en db
Hejsa Jeg kunne godt tænke mig at lave et program som undersøger, hvor godt en database udnyttes. Altså, hvis der fx er afsat 256B til en varchar og indholdet i nogle poster kun fylder 90, andre 200 osv. Men er det muligt? Jeg syntes ikke jeg kan finde nogen metoder i DatabaseMetaData() som giver oplysninger om, hvor meget plads der er afsat til de enkelte kolonner. I forbindelse med at måle på indholdet i de enkelte posterne i databasen kan man da hive indholdet ud ( fx rs.getString )og måle på hvor meget de fylder og få et reelt svar - altså et som passer med hvor meget den pågældende post fylder i db? Håber nogen kan hjælpe mig igang.
Det lyder super Arne. Jeg kigger på det i aften, men mon ikke godt du kan smide et svar. Din hjælp plejer trods alt at være meget brugbar! Vil man kunne gøre sådan som du foreskriver på alle typer? Altså, hvad nu hvis der fx ligger en BLOB eller anden datatype i databasen?
Hej igen Arne, så er jeg stødt i et par problemer... Jeg har fundet ud af, at getColumns ligger i interfacet DatabaseMetaData, men jeg har et par problemer:
1) Jeg kan ikke finde ud af, hvad det er for en klasse jeg skal bruge som implementerer DatabaseMetaData
2) Jeg er ikke med på, hvad getColumns parametre er: public ResultSet getColumns ( String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern )
Det ser desværre ud til, at hvis man fx har defineret en VARCHAR så bliver columnsize 0, hvorimod hvis man har defineret en VARCHAR(256), så bliver columnsize 256. Det samme gælder for andre typer. Derved bliver det altså svært at finde ud af, hvor meget plads der er afsat når det ikke explicit er defineret ved oprettelsen af tabellerne i databasen. Jeg har endnu kun prøvet på HSQLDB. Hvorvidt MySQL og andre reagerer på andre måder må kommer an på en test :)
Nå så har jeg forsøgt med mysql og det ser mere lovende ud :) Ja, de fleste databaser kræver en angivelse af maxstørrelse ved varchar, men de fleste tillader jo også, at man fx laver en INTERGER uden at angive maxstørrelsen. Her angiver MySQL dog selv størrelsen til 11. Hvorvidt det også gælder for andre typer har jeg ikke tjekket.
Nå for søren, ja det er jo så ret væsentligt når jeg gerne vil tjekke udnyttelsesgraden af databasen! :)
Jeg har siddet og kigget lidt i mysql doc, men kan ikke rigtig finde en oversigt over, hvor mange bytes, der sættes til side til de enkelte datatyper. Så det bliver måske lidt svært at lave en app. som viser en reel udnyttelsesgrad af databasen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.