Mattias Lind är en konsult inom it-branschen. Jag är specialiserad på Microsoft SQL Server, infrastruktur, kommunikation och säkerhet.

Välkommen!

Jag driver ett eget litet företag, Fandes Sverige AB, som levererar driftstöd, optimering av databaslösningar, utbildning genom partner, Informator, och mycket mer. Jag har arbetat som konsult sedan 1992 och drivit egen verksamhet sedan 2002.

En av mina passioner är westernskytte. De som känner mig har säkert hört detta till leda. Westernskytte i Sverige drivs genom Sweden Western Shooters. Skytteformen kallas Cowboy Action Shooting, och är som namnet antyder fyllt av Action. Man skjuter tidstypiska westernvapen, i tidstypiska kläder, i scenarier och resultatet räknas i förbrukad tid med tidstillägg för missar och procedurfel. 2006 var året jag fick mitt första SM-guld i kategorin Gunfighter, man skjuter med en revolver i vardera hand.

tisdag 24 april 2007

Ring en vän...

Då är jag äntligen tillbaka i verkligheten efter intensivt jobbande.

Jag fick ett samtal idag från en kollega i branschen, jag ringde tillbaka och hamnade som vanligt när man jagar varandra på mobilsvaret. Efter ett sluddrigt svar på frågan kom jag på att det finns nog fler som behöver flytta på databaserna på sin Microsoft SQL Server av allehanda olika anledningar.

Först en liten refresh. Din databas består av några filer i filsystemet; minst två stycken; datafiler och logfiler. Datafilerna har oftast en filändelse .mdf och/eller .ndf, Master/Numerous Data File, det är dessa som är det faktiska datat i databasen lagras. Dessa filer grupperas logiskt i databasen med filgrupper för att ge oss en möjlighet att fördela tabelldata på flera fysiska och adresserbara lagringspunkter. Ett förfarande som möjliggör parallellism i databasen, t ex traversering av index samtidigt som data börjar att returneras från tabellen. Ja, det finns många anledningar till att låta databasen bestå av flera fysiska filer associerade till flera filgrupper.

Databasen består även av logfiler; transaktionsloggen; vilka brukar ges filändelsen .ldf, Log Data File. Syftet med transaktionsloggen är att säkerställa förändringar i databasen. Logfilerna placeras med fördel på andra fysiska lagringsenheter separerade från datafilerna.

Vid förändring av data läses datasidor från datafilen upp i RAM-minne på databasservern de sedan förändras för att därefter dokumenteras i logfilen. När hela transaktionens berörda datasidor är förändrade finns de lagrade i logfilen i en så kallad transaktion, antingen markerade för COMMIT eller för ROLLBACK. Logfilen läses på ett återkommande schema, CHECKPOINT, vilket vid inträffande genomför skrivning av COMMITade datasidor till datafilen. Detta gör att vid förändring av data läses datasidor sporadiskt från datafilen och skrivs likväl sporadiskt till logfilen, samt att vid CHECKPOINT läses logfilen sekvensiellt samtidigt som det skrivs till datafilen. Detta gör att man med fördel skall fysiskt separera datafiler från logfiler. Logfilen läses även vid uppstart av databasserver samt vid montering av databaser för att säkerställa skrivning av COMMITade datasidor i datafilen.

Nu kan man konfigurera databasen i olika RECOVERY-lägen; SIMPLE, BULK_LOGGED och FULL. Där SIMPLE betyder att logfilen töms vid CHECKPOINT på COMMITade och ROLLBACKade transaktioner om skrivning till datafilen lyckas. Och där FULL betyder att logfilen inte töms automatiskt utam man blir tvungen att manuellt (går att automatisera) måste tömma logfilen. Man kan märka detta genom att databasens logfil konstant växer samt att den är större än datafilen, dvs inte bara är större utan även att dess nyttjande växer. Logfilen växer för alla transaktioner som påverkar datasidor i datafilen, även om man gör BULK-operationer. Såtillvida man inte konfigurerat databasen i BULK_LOGGED-läge, där BULK-operationer flaggas för att säkerställa att eventuella ytterligare transaktionslog-backuper tas och att övriga transaktioner loggas på samma sätt som i FULL-läge.

Ok, tänker ni. Hur gör man då? Från början kan jag bara säga att man gör rätt på en gång, dvs fysiskt separerar dessa filer redan vid databasens skapande. Ok, om man nu inte gjort rätt från början. Hur ska man göra då? Nu kommer vi till frågan jag fick. De som känner mig vet att jag gärna ger ett fullständigt och uttömmande svar närhelst jag har chansen. Och så även denna gången!

För att flytta datafiler och logfiler på en befintlig databas!
Givetvis förutsätter jag att Ni tar en fullständig backup på databasen innan Ni gör någonting överhuvudtaget! Inget ansvar tas från min sida.
Grafiskt, med antingen Enterprise Manager eller Management Studio, kan du högerklicka på databasen och välja DETACH DATABASE. Då kommer databasen kopplas loss från databasservern och med ens bli otillgänglig, det får inte vara någon ansluten mot databasen då det inte går att koppla loss den annars. Därefter flyttar du både datafiler och logfiler till de fysiska lagringsenheter du önskar, notera sökvägarna noga. Efter flytt eller kopiering av datafiler och logfiler högerklickar du på Databases och väljer ATTACH DATABASE, anger sökvägarna till både datafiler och logfiler. Nu är det klart! Det går även att göra med T-SQL och då genom att köra procedurerna sp_detach_db och sp_attach_db. Kolla i Books Online efter syntaxbeskrivning, där finns färdiga exempel.

Tänk på att det finns fler databaser än bara dina egna databaser på databasservern. Du har även en uppsättning med systemdatabaser värda omtanke. Master placerar du på ett säkert och redundant disksubsystem, Model används som "mall" för alla databaser du skapar och är lätt att återskapa, MSDB som innehåller alla databsjobb, schemaläggningar med mera och bör säkerställas, TempDB som används för alla temporära objekt och bör ligga på ett snabbt disksubsystem gärna anpassad i storlek för de behov din databasserver behöver. Tips om detta hittar du i Books Online och via detta White Paper.

Lycka till!
Mattias

onsdag 14 februari 2007

Norrköping för tjyvingen...

Någon som minns den serien. Hjalle, Julle och Hjulius... Ja, det var tider det.

Är hur som helst i Norrköping just nu, sitter på Best Western Princess Hotel på Skomakaregatan för de som vet var det ligger. Som vilket hotell som helst runt om i landet. Det som utmärker det här hotellet är deras Räk-crepes, kan rekommenderas när man sover över kvällsmaten.

Hade egentligen inte mycket att rapportera. Dock ska jag bara citera en vän.
"PS: Nu får du börja blogga om hur jäkla bäst du är på lärarfronten :)"
Du vet vem du är! Tack, det värmer.

Hade en genomgång idag med en kund om hur en SQL Server hanterar data och varför fel typ av index är fel och varför rätt val av index ger så makalöst stor effekt. Ni som upplevt min genomgång i klassrummet vet vad jag talar om. Det ger ofta en AHA-känsla när man får se det på tavlan. Ni som inte varit med, bara att ringa Tobias på Informator så grejar han in Er nästa tillfälle. ;o)

När jag får lite tid över ska jag börja skriva ner lite sql server optimeringstips för att publicera här. Vi ska tala om både datasidor, extent, klustrade och icke-klustrade index, statistics, filgrupper, partitionerade tabeller med mera.

So... Stay tuned or you'll might miss some...

söndag 4 februari 2007

En tung söndag...

Godmiddag,

Som titeln antyder är det tungt idag. Jag står på balkongen och gjuter kulor. Äntligen!!! Och så mycket tyngre än bly kan det ju inte bli.
Har gjort ett hundratal nu när mörkret börjar falla och det ska bli ett par hundra till innan jag ger upp.

Konstaterade att jag har fridag både måndag och tisdag, dvs jag är av någon outgrundlig anledning inte uppbokad. Tur det för den delen, nu hinner jag göra klart allt som jag lovat, ringa upp alla som väntar ett samtal och skriva klart allt som jag inte skrivit klart. Sedan var det tur eftersom en av mina äldsta kunder har införskaffat det där NASet som vi talade om i veckan och jag höll med om att det var en bra idé. Så nu kan jag besöka honom och kolla av så att allt rullar som det ska.

I övrigt blir veckan som så att jag anländer Göteborg sent på tisdag för att prata om optimering av MS SQL Server 2005 onsdag till Fredag. Det kommer handla om query hints, index och datasidor. Visste Ni att det inte alls är svårt att optimera en databasserver? Det är bara att se till att göra rätt från början... ;o)

Förhoppningsvis kommer ett gäng databasoptimerare och utvecklare vara lite klokare på fredag och några databaser må bättre. Väl mött i livet!

Nej, nu ska jag ut i oset och kylan igen.

Trevlig söndag,

Mattias

PS: Besök gärna Tobias Strand's blog, du hittar den här intill.
Idag söndag är han god make och far och anordnar födelsedagskalas...

fredag 26 januari 2007

Attans

Missade bara att receptet ska innehålla en nypa körsbärstomater också som du halverar och lägger på laxen. Skyn/såsen du får i lax-formen blir bara kalas

Nu ska en gammal cowboy sova

Gå inte vilse bland drömmarna,
Mattias

onsdag 24 januari 2007

Middagstipset...

Ikväll tänkte jag bara nämna att ska du diska så lägg inte den vassa förskäraren i diskhon. Det är bara dumt.

Sedan med tanke på att diska. Varför inte laga lite god mat. När jag avslutade dagens kurs bestämde jag mig för att prova köket i lägenheten jag fått låna. Enkelt skulle det vara, men gott och något jag aldrig testat förrut. Ni som känner mig vet att jag nästan aldrig äter fisk, så länge jag inte är tvungen i alla fall. Så fisk fick det bli..

Receptet på Mattias goda fisk:

En lagom bit färsk lax, gärna med skinnet kvar
Salt och vitpeppar efter smak och omdömme
Vårlök, salladslök eller annan lök med blast
Paprika
Bladspenat
Fiskbuljong
Lime
Smör
Potatis
Morötter

Lägg laxen med skinnet ner i en liten ugnssäker form, tillsätt en eller två matskedar vatten, ett par matskedar smör, smula i en buljongtärning runt om fisken. Salta och peppra som du tycker är lagom, med fisk brukar lite mer än vad man tror vara lagom. Lägg i bladspenat så det täcker fisken, strimla paprika och lägg i, lägg på lökarna som du bara tvättat med blast och allt, salta lite lätt ovanpå allt och pressa en halv lime över alltihopa.

Potatisen tvättar du med skalet på och skär i klyftor, lägger dessa i en ytterligare ugnssäker form, tvättar och klyftar morötterna med och sedan lägger dem också i formen. En eller två matskedar smör och lagom med salt.

Ställ bägge formarna i ugnen på 200 grader, efter ca 20-25 minuter lägger du folie över fiskformen och efter ytterligare ca 10-15 minuter tar du ut fiskformen. Höj till ca 225 grader och låt potatisen bli klar. Uppskattningsvis tar det 10 minuter till en kvart.

När potatisen är klar serverar du. Då kar fisken svalnat något och är ätbar. Ta en tallrik och lägg upp lite av grönsakerna och sedan fisken ovanpå, häll sedan på spad från fisken över fik och grönsaker. Lägg sedan på potatis och morötter och sedan är det bara att njuta.

Kostnad för två portioner ligger på ca 200 kronor, tillsammans med ett gott vitt vin. Gärna lätt och sött. Tillredning är enkel och passar att göra tillsammans med någon. Eller ensam med för den delen.

Smaklig måltid,
Mattias