Kom ihåg mig?
Home Menu

Menu


Fältlängder i databaser

Ämnesverktyg Visningsalternativ
Oläst 2009-02-15, 12:06 #1
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Jag har tänkt på en sak, när man sätter fältlängder på kolumner i databaser så har jag i alla fall fått för mig att man ska sätta längden på 8 , 16, 32, 64, 128, 256...

Finns det någon fördel med att göra detta mot att sätta "mänskliga" tal?
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-15, 15:22 #2
SimonPs avatar
SimonP SimonP är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2006
Inlägg: 832
SimonP SimonP är inte uppkopplad
Mycket flitig postare
SimonPs avatar
 
Reg.datum: May 2006
Inlägg: 832
Jag gör det alltid av ren vana och ofta tjänar man på det, ett 32-bits OS jobbar ju med 4 bytes åt gången.
SimonP är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-15, 17:33 #3
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by KarlRoos@Feb 15 2009, 13:06
Jag har tänkt på en sak, när man sätter fältlängder på kolumner i databaser så har jag i alla fall fått för mig att man ska sätta längden på 8 , 16, 32, 64, 128, 256...

Finns det någon fördel med att göra detta mot att sätta "mänskliga" tal?
Jag misstänker att detta spelar alltmindre roll med tiden. För en processor som jobbar med 64 bitar betyder 8-bitars fält att dessa behöver maskas ut ur en 64-bit vilket till och med skulle kunna ta längre tid (men behöva mindre plats) än 64 bitar. Att maska ut t.ex. 10 bitar är inte så särskilt mycket mer komplicerat. Allt detta går dock väldigt snabbt nuförtiden.

Detsamma gäller strängar - förut kunde man kanske vara lite effektivare med 8-bitarsblock men nu med utf-8 och andra fler-bytes-teckenkodningar så finns det ingen nytta med att deklarera dessa i potenser av 2 eftersom platsen ett tecken tar inte längre stämmer överens med ett bestämt antal bitar. (En sträng med 8 tecken kunde tidigare "lyftas" med 2 operationer av en 32-bitarsprocessor men med utf-8 så finns det inget som säger att ett tecken behöver just 8 bits.) Eventuellt skulle det kunna ge en prestandavinst att ha fälten i databasen i ucs-2 (dvs. ren unicode) som alltid tar 16 bitar - här skulle det kunna tänkas att processorn snabbare skulle kunna bearbeta större textmassor snabbare - men det måste ju för det mesta ändå konverteras och levereras i utf-8 vilket äter upp en eventuell prestandavinst.

Lägg dessutom till att databaserna lägger till extra bytes och bits för null-värdet och strängterminering och liknande och det hela blir långt ifrån säkert att det lönar sig att använda just 16 eller 32 osv.

För att få ett riktigt bra svar på din fråga bör du nog specificera vilken databas och processorstruktur du använder och i synnerhet vilka datatyper du avser. Men risken är nog att det inte längre ger några vidare prestandavinster - och i så fall får du nog belastningstesta databasen själv…

Bra databasstruktur och ordentlig indexering är betydligt viktigare.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-15, 17:40 #4
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
I 99% av fallen spelar det nog som martine skriver extremt liten roll. Har man extrem trafik och / eller extrema datamängder så finns det dock all anledning till att effektivisera in i minsta detalj men då är nog som sagt var det enda rätta att köra egna belastningstester och denna detalj är då trots allt långt ifrån den viktigaste.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-15, 20:25 #5
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Citat:
Originally posted by KarlRoos@Feb 15 2009, 13:06
Jag har tänkt på en sak, när man sätter fältlängder på kolumner i databaser så har jag i alla fall fått för mig att man ska sätta längden på 8 , 16, 32, 64, 128, 256...
Finns det någon fördel med att göra detta mot att sätta mänskliga tal?
Det beror på vad du ska lagra. En CHAR så spelar det inte så stor betydelse. en INT spelar det större betydelse.
studiox är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:15.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017