Avatar billede steen_hansen Forsker
08. april 2009 - 11:32 Der er 7 kommentarer og
1 løsning

Definationer

1. Jeg oprettede i sin tid et spørgsmål vedr. kapaciteten i MySQL. Det har jeg åbenbart fået grueligt galt i halsen. F.eks. kom jeg frem til, at når jeg skal afsætte plads til et ID, ville TINYINT ville være tilstrækkeligt, eftersom et ID max ville kunne komme op på et antal i retning af 999999. Så ville jeg være på den helt sikre side. Men forleden oprettede jeg en tabel, hvori jeg importerede godt 110 posteringer fra en kommasepareret CSV-fil. Herefter er der kommet yderligere 30-40 posteringer, som jeg ville indtaste manuelt i phpAdmin for en nemheds skyld, fremfor at oprette en formularside. Men da jeg kom til nr. 128, stødte jeg ind i en fejl, databasen ville ikke modtage mere. Jeg googlede på TINYINT, og fandt frem til, at 127 records er max antal, når vi taler TINYINT. Er det korrekt?

2. Jeg så også -127 til 127 i forbindelse med TINYINT. Hvad indebærer det helt nøjagtigt? Jeg kunne jo se, at ved brug af TINYINT kan man poste max 127 poster, men det range fra -127 til 127 har jeg ikke fået helt rigtigt fat i.

3. Jeg har set, at VARCHAR kan indeholde op til 255 karakterer. Jeg har set, at BINARY og VARBINARY benyttes til binære værdier. Men indimellem er jeg lidt i tvivl, om hvad jeg skal benytte til indlæg, eller afsnit i en lang artikel, for ikke at der går for meget spildplads til. Eksempelvis finder jeg det hensigtsmæssigt at sætte en øvre grænse på 2000 karakterer ind ét sted, andre steder måske 50000 eller mere.

4. Når jeg benytter de forskellige muligheder, er jeg i tvivl om hvad der reelt afsættes. Hvis jeg vælger (kun et tænkt eksempel) LONGTEXT, er der afsat X antal karakterer. Lad os i dette tænkte eksempel sige 1.000.000 karakterer. Vil der blive afsat plads i databasen til 1.000.000 karakterer til samtlige indlæg, så hvert indlæg vil fylde 1.000.000 karakterer, eller vil der kun blive den plads, som indlægget fylder? Hvis der bliver afsat plads til 1.000.000 karakterer i hvert recordset, og et indlæg reelt kun fylder 1.000 karakterer, har jeg jo brændt plads til 999.000 karakterer af på ingenting, og så kan man jo hurtigt få opbrugt sin kvote på SQL-serveren.

5. Jeg håber der er én, der kan uddybe VARCHAR, TINYINT, TEXT, DATE, SMALLINT, MEDIUMINT .... og hvad der ellers findes. Hellere end kortfattet forklaring, fremfor links til sider der forudsætter, at man har en stor baggrundsviden.

Jeg sætter 30 point af til de 4 første spørgsmål, og 80 point til det sidste. Håber på lidt hjælp, selvom vi går i gang med Påsken :)
Avatar billede steen_hansen Forsker
08. april 2009 - 11:35 #1
Korrektion:

Jeg sætter 30 point af til hvert af de 4 første spørgsmål, og 80 point til det sidste.
Avatar billede erikjacobsen Ekspert
08. april 2009 - 11:38 #2
1) Brug en INT - op til ca. 2 mia. Det ekstra plads den fylder i forhold til en TINYINT er helt sikkert ligegyldigt

2) TINYTINT kan gå fra -128 til 127 - man plejer ikke at bruge negative tal til ID-er.

3) En VARCHAR afsætter kun plads til de tegn, der er i strengen.

4) Der afsættes kun plads til de bytes der puttes i feltet.
Avatar billede steen_hansen Forsker
08. april 2009 - 11:47 #3
Hej Erik

Kortere kan man ikke sige det, fedest :)

I hvilke situationer benytter man op/ned til -128? Jeg forstår ikke hvad det går ud på.

Men tak for hjælpen, jeg fik godt nok hurtigt sat en masse ting på plads :)
Avatar billede steen_hansen Forsker
08. april 2009 - 11:52 #4
Og har du en defination på de forskellige uddybe VARCHAR, TINYINT, TEXT, DATE, SMALLINT, MEDIUMINT ...... Måske er der kun behov for TINYTEXT frem for LONGTEXT. Men jeg ville gerne have et overblik over hvornår der er behov for at benytte enten det ene eller det andet.
Avatar billede erikjacobsen Ekspert
08. april 2009 - 12:29 #5
Man bruger en TINYINT hvis man
  a) har plads/effektivitets-problemer, og
  b) ved med sikkerhed at de tal man bruger ikke bliver større

Ellers bruger du bare en INT.

Brug VARCHAR til alt du ved holder sig under 255 bytes.

Brug TEXT eller LONGTEXT til større ting.

Og bruge selvfølgelig DATE og DATETIME til datoer og datoer med tid.
Avatar billede steen_hansen Forsker
12. april 2009 - 11:04 #6
Ok. Jeg ved du ikke samler point, så jeg tager dem tilbage igen. Men du skal have 1000 tak. Du er en kolonorm hjælp - som altid :)

Forøvrigt, hvor mange bytes kan hhv. TEXT og LONGTEXT indeholde?
Avatar billede steen_hansen Forsker
12. april 2009 - 11:06 #7
Og forøvrigt, er jeg den eneste, der har problemer med at poste indlææg i MSIE? Jeg synes godt nok den er træg, der sker ikke så meget, når man forsøger.
Avatar billede erikjacobsen Ekspert
12. april 2009 - 11:12 #8
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Cognizant Technology Solutions Denmark ApS

Test Manager

Teknologisk Institut

Udvikler til digitaliseringsteam