MsSQL: Basal performance tuning, part 1
|
|
- Kirsten Holmberg
- 6 år siden
- Visninger:
Transkript
1 Denne guide er oprindeligt udgivet på Eksperten.dk MsSQL: Basal performance tuning, part 1 Hvordan man skriver "God SQL" for bedre performance. Skrevet den 03. Feb 2009 af trer I kategorien Databaser / MS SQL Disse artikler om basal performance tuning er uddrag af en intern anbefaling om SQL som jeg har skrevet til udviklerne på min arbejdsplads, NNIT a/s. Bemærk i øvrigt: Artiklen her er oprettet i kategorien MSSQL og handler derfor primært om Microsoft SQL Server. Flere af optimeringstippene er dog generiske og gælder på mange platforme. Den største gevinst under performance tuning opnår man ikke ved at skrue på serverens indstilninger, men ved at få SQL'en til at køre godt. Når der skrives SQL til triggers, stored procedures og ad-hoc queries til dataudtræk / rapportgenerering er det af stor betydning om SQL'en er velskrevet for at data udtrækkes hurtigt og med mindst serverbelastning. Hver SQL udtryk der afvikles skal kompileres og en queryplan - dvs. en plan for hvordan data skal findes og bearbejdes - skal laves. Dårlig SQL vil gøre, at unødige data læses og bearbejdes mens god SQL vil minimere både datamængder og antal operationer. Man bør være opmærksom på, at et SQL udtryk der fungerer på en single-processor maskine ikke nødvendigvis vil give en god ydelse på en multi-processor maskine og vice versa. Nogle af de ting jeg gennemgår her i artiklen er rent performancemæssige, andre er primært af hensyn til driftsikkerhed. I øvrigt, når jeg skriver "Undgå et-eller-andet" bør det læses "Undgå om muligt". Man må først fokusere på at få de korrekte data ud, dernæst at optimere forespørgslen. Brug af hints På SQL Server kan man angive hints til optimizeren, f.eks. vedr. valg af index, jointyper etc. Denne type hints bør man under ingen omstændigheder benytte i et driftssystem, de er beregnet til troubleshooting etc. Problemet er, at efterhånden som data ændres (og hardwaren udvides) vil optimizeren rekompilere sql'en og lave nye queryplaner som matcher data bedre. Bruger man hints vil optimizeren over tid typisk ænde med suboptimale planer. Brug af database defaults Alle specielle indstillinger som er krævet for korrekt opførsel bør sættes i forbindelses-strengen når applikationen forbinder til databasen. Kun såfremt man er sikker på, at varierende indstillinger ikke har betydning for brugen af databasen bør man ignorere disse. De forskellige indstillings-muligheder på en database kan ses ved kommandoen sp_dboption som er beskrevet i Microsoft Books Online. Begræns kommunikation mellem server og klient Indsæt altid udtrykket SET NOCOUNT ON i starten af en stored procedure eller trigger. Udtrykket undertrykker SQL Servers normale tilbagemelding om antal rækker berørt / opdateret etc. hvormed der
2 spares et roundtrip fra klient til server. Benyt "Show Execution plan" Query Analyzers "Show Execution Plan" viser en eksekveringsplan for et givent udtryk og kan også bruges til at foretage en sammenligning af queries - de forskellige udtryk skrives blot i samme query vindue og afvikles. Execution plan fortæller derefter hvor stor del af den samlede omkostning det enkelte statement har. Dermed kan man nemt sammenligne forskellige sql-formuleringer og finde det mest effektive. Prefix altid tabeller, views og stored procedures med ejer. Når en tabel eller lignende uden ejer-prefix skal benyttes søger optimizeren først efter tabellen med aktuelle bruger som ejer. Findes den ikke søges der så efter tabellen med [DBO] som ejer. Ejer-prefixet sikrer altså hurtigere tilgang til det søgte objekt og tillader desuden optimizeren at genbruge eksekveringsplaner således at en ny plan ikke skal gene-reres for hver bruger der skal udføre en given query. Eks. Korrekt SQL: SELECT [col1], [col2], [col3] Fejlagtig SQL SELECT [col1], [col2], [col3] FROM [mytable] Benyt table-alias'er til at øge læsbarheden. Ved større eller mere komplekse SQL udtræk hvor data hentes fra flere tabeller eller views kan man med fordel benytte alias'er fremfor at skrive det fulde tabel-navn (inkl. ejer) for hver brugt kolonne. Eks. SELECT p.[navn],a.[navn] FROM [dbo].[persontabel] AS p INNER JOIN [dbo].[afdelingstabel] AS a ON p.[personafdeling_id] = a.[afdelingsid] Undgå rå SQL i applikationer Man bør undgå at fyre rå SQL af fra applikationer / websider. Pak i stedet alt ind i procedurer og funktioner. Dermed vil al SQL normalt ligge pre-kompileret og med færdige queryplaner fremfor at skulle dannes fra gang til gang. Dette giver også en sikkerhedsmæssig fordel da det så kun er de pre-definerede operationer man kan udføre på databasen. Parameteriser rå SQL Når man benytter rå sql fra klienten / applikationen, vil SQL Serveren forsøge at parameterisere disse. Parameteriseringen består i, at konstanter erstattes med placeholders så den kompilerede SQL og Queryplanen kan genbruges.
3 På udtryk som de her viste er det oplagt at placere placeholders ved 17, 'Hans Hansen', 100 og 22. DELETE FROM dbo.mytable WHERE id = 17 SELECT navn, adresse FROM dbo.medlemmer WHERE navn = 'Hans Hansen' UPDATE dbo.mytable SET value = 100 WHERE id = 22 Desværre er det langt fra altid, at SQL Server kan gøre det, selv ved så simple udtryk som ovenfor. Tester man med et DELETE udtryk som ovenfor vil man opdage, at den nogen gange parameteriserer andre gange gør den ikke! Man bør derfor altid parameterisere sin SQL fra applikationen, Benyt altid kolonne-specifikationer. Skriv altid fuld liste af kolonne-navne i SELECT og INSERT statements. Benyttes wildcards vil man typisk læse unødige data hvilket giver et overhead og senere ændringer / opdateringer af tabellerne kunne få applikationen (eller dens stored procedures og views etc) til at fejle når de underlæggende tabeller ændres. Korrekt SQL SELECT [UserName] INSERT INTO [dbo].[mytable] ([col1],[col2]) VALUES ('value1','value2') Fejlagtig SQL SELECT * INSERT INTO [dbo].[mytable] VALUES ('value1','value2') En undtagelse for ovenstående er ved en COUNT(), hvor brugen af wildcards frem for et kolonne-navn normalt sikrer optimal performance. Angiver man i en COUNT() et kolonnenavn vil SQL Server optælle den angivne kolonne - uanset om den er indekseret. Bruges i stedet wildcard (*) vil SQL Ser-ver altid vælge en indekseret kolonne hvorfra antal
4 rækker hurtigt kan returneres. Undgå brug af dynamisk SQL Bruges dynamisk SQL i stored procedures, user-defined functions og/eller triggers vil disse objekter skulle rekompileres og en ny query plan generes for hver afvikling. Forbehold brug af dynamisk SQL til specielle stored procedures / funktioner som kun vil blive kaldt få gange af få brugere. Begræns brug af OUTER JOINs. Ved outer joins tvinges SQL Server til at gennemgå hele tabel-sættet, derfor skal den join type benyttes med omtanke - specielt i forbindelse med store tabeller. Grundlæggende; Der bør aldrig forekomme situationer hvor det er nødvendigt at foretage flere outer joins på samme tabel - er man i sådan en situation er det ofte et tegn på, at database designet er forfejlet. I visse tilfælde vil man med fordel kunne skifte flere OUTER JOINS ud med en enkelt CROSS JOIN kombineret med INNER JOINs og WHERE-betingelser. Undgå unødige sorterings-operationer Sortering tager CPU tid og kræver, på SQL Server 7, plads i TEMPDB, mens det, på SQL Server 2000, primært forøger hukommelsesbruget (større sorteringer vil dog stadig, helt eller delvist, blive skrevet til TEMPDB). Visse operationer kræver en implicit eller eksplicit sortering, og bør derfor generelt undgås såfremt applikationen / systemet ikke har behov for denne funktionalitet. Eksplicit sortering: ORDER BY Implicit sortering: DISTINCT, UNION, GROUP BY samt IN (sub-select) Bemærk i øvrigt: 1) at UNION ALL ikke inkluderer en implicit sortering - ved man, at der ikke er dubletter i tabellerne kan UNION ALL benyttes frem for UNION. UNI-ON ALL kan dog stadig kræve brug af TEMPDB til mellemlagring af data. 2) At ORDER BY er nødvendig for at sikre at data returneres i en given rækkefølge, selv i forbindelse med en GROUP BY operation. 3) At ORDER BY altid bør understøttes af et index der dækker de kolonner der sorteres på. Undgå at benytte DISTINCT Grundlæggende bør DISTINCT ikke bruges. Generelt kan det siges, at brug af DISTINCT antyder at WHERE betingelsen ikke er korrekt angivet (resultatet af en meget gammel og meget lang diskussion om relationel database-teori). Ved DISTINCT er der desuden et overhead pga. en implicit sortering som beskrevet ovenfor. Benyt "EXISTS (sub-select)" frem for "IN (sub-select)" Et udtryk der baserer sig på en IN operator kan omskrives til at benytte en EXISTS operator. Benyttes IN operatoren skal SQL Server søge gennem det returnerede datasæt for hver resultat-række, ved EXISTS operatoren kontrolleres blot om der returne-res et datasæt eller ej, hvorved søgning undgås. Da checket reelt set dermed er et check af NULL eller NOT-NULL kan man lade sub-select'en returnere en konstant hvilket yderligere sænker server-belastningen. Eks. kan udtrykket
5 SELECT column WHERE column IN (SELECT column FROM [yourtable]) Erstattes med SELECT column AS mt WHERE EXISTS( SELECT 1 FROM [dbo].[yourtable] AS yt WHERE yt.column = mt.column ) På SQL Server 2000 vil Query Rewriteren - en del af Query Optimizeren - som regel kunne ændre et IN udtryk til et EXISTS hvorved performance bibeholdes. Dette er dog ikke altid tilfældet - specielt ikke ved komplekse statements. Undgå ikke-optimerbar SQL De ikke-optimerbare betingelser forhindrer enten helt brug af indeks eller forhindrer effektiv brug af indeks. Dermed kommer man nemt ud i full-table scan for at finde blot få rækker. Statements der benytter OR eller IN (value,value,,,) vil typisk tvinge SQL Ser-ver til gentagne indeksopslag med en efterfølgende merge eller hash-operation for at udfinde data. Eks. vil følgende WHERE betingelse give 3 søgninger gennem index med efterfølgende merge: WHERE x = 8 OR y = 'A' OR z = 'Hans' Statements der benytter NOT vil skulle negere WHERE betingelsens udsagn, det kan f.eks. betyde at betingelsen omskrives til en OR (i.e. NOT X = 5 omskrives til X < 5 OR X > 5), hvorefter ovenstående "problem" opstår. Ved brug af < (mindre end) og > (større end) samt BETWEEN vil optimizeren ofte vælge et tablescan frem for indexscan såfremt der udtrækkes data der ikke er omfattet af index. Undgå non-deterministiske funktioner i WHERE betingelser Non-deterministiske funktioner er i følge Microsofts definition funktioner der returnerer forskellige data med samme (eller ingen) input parametre. Benyttes sådanne funktioner kan et statement reelt set ikke optimeres. Eksempler på non-deterministiske funktioner er (se flere i Books Online): GETDATE(), RAND() og PATINDEX(). I viewet INFORMATION_SCHEMA.ROUTINES viser kolonnen IS_DETERMINISTIC om SQL Server opfatter en given procedure eller funktion som deterministisk eller ej. Undgå brug af cursors Performancemæssigt er en cursor-baseret løsning altid langsommere end en "ren" SQL løsning - og kræver tillige flere ressourcer under afviklingen.
6 Er en cursor påkrævet til løsning af en given opgave, skal man naturligvis vælge en cursor type som kan løse opgaven. Man skal blot sikre sig, at det er den letteste cursor man vælger. Ofte vil det være nok at benytte en cursor erklæret med LOCAL FAST_FORWARD - hvor cursor data er readonly og der kun kan traverseres en vej gennem datasættet. I Books Online gennemgås de forskellige cursor typer og deres fordele og hvilke keywords der kan kombineres. Bemærk at såfremt der vælges en cursortype som ikke understøtter de funktioner som efterfølgende benyttes, vil SQL Server fore-tage en implicit type-konvertering af den valgte cursor. Man kan derfor normalt med fordel altid angive FAST_FORWARD. Det bør bemærkes at man altid uanset den valgte cursor type bør definere cursor specifikt som LOCAL eller GLOBAL frem for at forlade sig på database default. Ofte kan man undgå en cursor ved at tænke lidt utraditionelt, overvej f.eks følgende: Opbyg en kommasepareret streng over alle fornavne i en tabel. Oplagt at lave den således varchar(50) declare crsr cursor local fast_forward select fornavn from data open crsr fetch next from crsr begin fetch next from crsr end close crsr deallocate crsr as [output] Men en utraditionel løsning er langt hurtigere og kræver mindre kode: varchar(8000) from data as [output] God fornøjelse Troels Kommentar af driis d. 19. Dec God artikel! Kommentar af skwat d. 15. Mar
7 Det er ganske simpelt pisse godt, har du med mssql at gøre SKAL du læse alle trers artikler. Kommentar af nih d. 13. Aug Kommentar af lomse d. 26. Jan Hvis, jeg kendte noget til emnet, er det sikkert en rigtig fed artikkel. men det kunne lige så godt være skrevet på kinesisk, jeg fatter intet af det. Kunne du ikke skrive en mere sigende tittel på den. Feks. basal performance tuning af SQL. Kommentar af arne_v d. 18. Dec Glimrende. Kommentar af rosenbeck d. 16. Feb Kommentar af squashguy d. 25. Feb Kommentar af vallemanden d. 24. Feb sql er mange ting! skriv dog hvad det handler om(mssql, MySQL, O.S.V.) inden man smider 5 point væk(heldigvis er det jo ingen ting)
Introduktion til SQL queries
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i
Læs mereDatabase tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk
Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som
Læs mereImport af rekursivt (parent-child) hierarki i Palo
Import af rekursivt (parent-child) hierarki i Palo Dette dokument beskriver hvordan et simpelt rekursivt (parent-child) hierarki kan importeres ind i Palo på forskellige måder via SQL og samtidig bibeholde
Læs mereSQL for MySQL-begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk SQL for MySQL-begyndere I denne artikel vil jeg prøve at beskrive MySQL på begynderniveau. SQL står for Structured Query Language, og er et sprog til
Læs mereDe vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML
SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en
Læs mereSkrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel
Læs mereDatabase design for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter
Læs mereListen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Læs mereapplikation----x----odbc driver manager----foobar ODBC driver----foobar database
Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereMySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.
Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereParameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med
Læs mereViews etc. Databaser
Views etc. Databaser Views Med Views kan vi gemme nogle af de lange select sætninger. I vores eksempel fra tidligere er det f.eks. forbundet med en del besvær at finde telefon nr og bilmærker for en sælger
Læs mereBegrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen
Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Læs mereDatabase programmerings tips
Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler
Læs mereSidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.
Sidste forelæsning Jacob Aae Mikkelsen IMADA 28. april 2013 Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28. april 2013 1 / 36 Outline 1 Brugere og Sikkerhed Jacob Aae Mikkelsen (IMADA) Sidste forelæsning
Læs mereDatabaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Læs mereEn Kort Introduktion til Oracle
En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering
Læs mereIntroduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002
Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse
Læs merePrepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.
Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010
Læs mereIndholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...
Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker
Læs mereSkriftlig opgave. Designtanker i database-nære systemer
Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design
Læs mereDB undervisning 01-01
Databaser... 2 Tabeller... 2 Redundans... 3 Første regel... 4 Anden regel... 4 Tredje regel... 5 Relationer... 5 Opskrift... 6 SQL sætninger til at oprette tabeller... 7 SQL sætninger til at indsætte data...
Læs mereSQL Server 2016 Data Adgang
SQL Server 2016 Data Adgang MSBIP, 5. OKTOBER, 2015 Agenda SQL Server 2016 CTP 2.3 Pragmatisk Data Adgangskontrol Row Level Security Dynamic Masking Kombination af begge Alternativet Hvem er jeg Selvstændig
Læs mere1. Basal select med (stjerne)
1. Basal select med (stjerne) 1. List alle øltyper. a. select * from oltyper 2. List alle bryggerier a. select * from bryggeri 3. List alle Danmarks postnumre samt tilhørende by, landsdel og antal indbyggere
Læs mereDatabase. lv/
Database 1 Database Design Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management system) Et SW system der gør det muligt at definer, oprette og vedligeholde
Læs mereData lagring. 2. iteration (implement backend)
Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering
Læs mereSporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services
Sporbarhed og Rapportering i Quality Center Kim Stenbo Nielsen NNIT Application Management Services Indhold INTRODUKTION Hvem er jeg Hvad vil jeg fortælle om QC std. rapporteringsfaciliteter EXCEL RAPPORTER
Læs mereDatabase optimering - Indeks
Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,
Læs mereParameterisering af databasekald med ASP og ADO
Denne guide er oprindeligt udgivet på Eksperten.dk Parameterisering af databasekald med ASP og ADO Jeg har efterhånden set en del spørgsmål her på Eksperten vedr. SQL injections og hvordan man kan beskytte
Læs mereViews. Et view er en relation defined ud fra gemte tabeller ( base tables ) og andre views To typer:
Views 1 Views Et view er en relation defined ud fra gemte tabeller ( base tables ) og andre views To typer: 1. Virtual = Ikke gemt i databasen; kun definitionen af den 2. Materialized = Date konstrueret
Læs mereIntroduktion til programmering
Introduktion til programmering Databaser Uge 38 L. Ingemann: SQL databaser på nettet, kap 2-4. Kompendium L. Ingemann: SQL databaser på nettet, kap 6-20, Kompendium Sidste gang Databaser Relationelle databaser
Læs mereDen forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter
Læs mereDesign Visual Analytics-rapporter for bedst mulig performance
SAS USER FORUM Design Visual Analytics-rapporter for bedst mulig performance Torben Skov, SAS Institute Inspiration til dette indlæg http://support.sas.com/resources/papers/proceedings17/sas0734-2017.pdf
Læs mereEn opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin
En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin Trin 1: Lav en Domain model Opgave beskrivelse - Scandic hotel kæde Lav en domain model af Hotel-kæden.
Læs mereI mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.
Denne guide er oprindeligt udgivet på Eksperten.dk Hvem er online? Online script, som tager højde for at der kan være flere personer, som har den samme IP-adresse. Scriptet viser hvor lang tid brugeren
Læs mereRatingsystem i PHP og MySQL
Denne guide er oprindeligt udgivet på Eksperten.dk Ratingsystem i PHP og MySQL Lær at lave et system til at vise rating/bedømmelse på artikler og nyheder. Skrevet den 03. Feb 2009 af virtual1ty I kategorien
Læs mereTagwall med Php & MySQL
Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall
Læs mereUploade billeder eller andre filer ved hjælp af php og mysql
Denne guide er oprindeligt udgivet på Eksperten.dk Uploade billeder eller andre filer ved hjælp af php og mysql Denne artikel viser hvordan man kan uploade et billede eller en anden fil, og tilknytte det
Læs mereDatabasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002
Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Læs mereTietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125
Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...
Læs mereLoginsystem (med MySQL)
Denne guide er oprindeligt udgivet på Eksperten.dk Loginsystem (med MySQL) Dette er en guide til, hvordan man kan lave et loginsystem med php og muligvis også med sessioner og MySQL Skrevet den 02. Feb
Læs merePHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
Læs mereIntroduktion til SQL
Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke
Læs mereOPC Access 3.0 opdatering via Stored Procedure
OPC Access 3.0 opdatering via Stored Procedure Dette dokument gennemgår et eksempel på, hvordan OPC Access 2.0 kan konfigureres til at opdatere en database via en stored procedure. OPC ACCESS 2.0 OPDATERING
Læs mereManglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler.
Manglende konsistens i datamodellen og upræcise SQLsætninger er årsagen til, at mange IT-systemer fejler. Af Seniorkonsulent Carsten Saastamoinen-Jakobsen Skal datamodellen blot være på 3NF (normalform)?
Læs mereDerfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer
Denne guide er oprindeligt udgivet på Eksperten.dk TreeView i Access II Jeg vil i denne anden udgave af treeview føljetonen begynde på et mere brugbart eksempel med et TreeView. Vi laver en ny database
Læs mereI denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.
Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations
Læs mereBemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.
Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i
Læs mereDatabase for udviklere. Jan Lund Madsen PBS10107
Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated
Læs mereVejledning til Teknisk opsætning
Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereMicrosoft Log Parser, Windows logfil analyse
Denne guide er oprindeligt udgivet på Eksperten.dk Microsoft Log Parser, Windows logfil analyse Microsoft's logfiler er ikke lette at bruge. med Microsoft Log Parser, har du alle muligheder. Log parser
Læs mereKursus/workshop: SQL
Kursus/workshop: SQL En workshop - med fokus på workshop. En workshop arrangeret af PROSA Palle Nygaard Hansen Frank Jensen Indledning Gennemgang af alle basale SQL-sætninger Forløb for alle 3 aftener:
Læs mereDatabasesystemer. IT Universitetet i København 7. juni 2005
Databasesystemer IT Universitetet i København 7. juni 2005 Eksamenssættet består af 5 opgaver med 13 spørgsmål, fordelt på 6 sider (inklusiv denne side). Vægten af hver opgave er angivet. Du har 4 timer
Læs mereJava web applikationer med Tomcat
Denne guide er oprindeligt udgivet på Eksperten.dk Java web applikationer med Tomcat Denne artikel beskriver hvordan man kan konfigurere container managed security og en database connection pool i Tomcat.
Læs mereEkstra hastighed med array's i Excel-VBA
Denne guide er oprindeligt udgivet på Eksperten.dk Ekstra hastighed med array's i Excel-VBA Brugen af arrays til indlæsning af og skrivning til celler i Excel kan give betragtelige hastighedsforøgelser
Læs mereRigtig SQL Programmering
Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter
Læs mereFunktions opdatering 4.5.01 ASPECT4 QueryManager (B=fejl, S=support/Info, T=Opgave, W=Releaseønske)
ASPEC4 QueryManager (B=fejl, S=support/Info, =Opgave, =Releaseønske) 00001289 Dags dato som standardværdi Standardværdierne for datofelter i en rekvisition kan sættes til dynamiske datoer, således at rekvisitionsfeltet
Læs mereSQL Server 2008 Spatiale eksempler. Plan & Miljø, GIS
SQL Server 2008 Spatiale eksempler Plan & Miljø, GIS Stråtækte bygninger SQL script udtræk og geokodning af stråtækte bygninger fra BBR. Geokodede bygninger er en forudsætning. NB! Frederikssund Kommune
Læs mereDML, Foresprgsler Relationel algebra + noget mere! af skemaer (overlap m. DDL)
SQL Stuctured Query Language, spiller roller som DDL, denere relationsskemaer m.v. DML, Foresprgsler Relationel algebra + noget mere! Opdatering af relationer af skemaer (overlap m. DDL) Hvem bruger SQL
Læs mereEksempel på en database: studenter, kurser, eksamener
Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser
Læs mereHack of the Month opgave 2
Hack of the Month opgave 2 www.hackofthemonth.dk Holdet bag www.hackofthemonth.dk: Søren Rasmus (ikke mig) Roninz Stiller hver måned en ny opgave: Applikationssikkerhed Webapplikationssikkerhed Slide 2
Læs mereMålet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål
Læs mereSamspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.
GeoCad modul GeoDB I GeoCAD er det muligt at koble relationsdatabase til GeoEDIT. Her igennem er det muligt at lagre forskellige oplysninger i databasen og koble disse oplysninger til objekter i kortet.
Læs mereEksamen, DSDS, efterår 2007
Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke
Læs mereOPC ACCESS HEARTBEAT 1
OPC Access Heartbeat Dette dokument gennemgår i et kort eksempel, hvordan OPC Access konfigureres til at anvende Heartbeat funktionen til at dokumentere kontinuerlig forbindelse mellem SQL Server og OPC
Læs mereSkriftlig eksamen i kurset. Informationssystemer
6. semester sundhedsteknologi Skriftlig eksamen i kurset Informationssystemer Der er 3 timer til at besvare opgaven. Alle hjælpemidler er tilladte. Skriv kort og præcist. Referer gerne til kursuslitteraturen.
Læs merePassword systemer til husbehov
Denne guide er oprindeligt udgivet på Eksperten.dk Psword systemer til husbehov Kort gennemgang af databe-funktioner til adgangskode-registering med reversibel og irreversibel kryptering. Skrevet den 03.
Læs mereDatabase "opbygning"
Database "opbygning" Dette områder falder mest under en DBA's ansvarsområde. Det kan sagtens tænkes at en database udvikler i nogle situationer vil blive nød til at oprette produktions og test) databaser,
Læs mereIntroduktion til OPC Access
Introduktion til OPC Access OPC Access anvendes til at kommunikere med jeres produktionsudstyr via OPC. OPC Access kombinerer en SQL Server med OPC, således at jeres produktionsudstyr kobles sammen med
Læs mereOpgave 1 Basal select med (stjerne)
Opgave 1 Basal select med (stjerne) 1. List alle øltyper. 2. List alle bryggerier 3. List alle Danmarks postnumre samt tilhørende by, landsdel og antal indbyggere 4. BONUS: List alle ølmærker med alt deres
Læs mereI denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke
Denne guide er oprindeligt udgivet på Eksperten.dk MySQL for nybegynder I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen
Læs mereDatabasesystemer. IT Universitetet i København 16. januar 2006
Databasesystemer IT Universitetet i København 16. januar 2006 Eksamenssættet består af 5 opgaver med 16 spørgsmål, fordelt på 6 sider (inklusiv denne side), samt et svarark, hvor visse spørgsmål skal besvares.
Læs mereCLR Integration. Af Torsten Holtse, pbs Indhold
CLR Integration Af Torsten Holtse, pbs10104 Indhold Opgavebeskrivelse... 2 Introduktion... 2 CLR Integrations muligheder... 2 Stored Procedures, Functions og Triggers... 2 Aggregates og User-defined Types...
Læs mereIntroduktion til SQL
Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke
Læs mereDatabaser Obligatorisk opgave 2 Vejledende løsning
University of Southern Denmark Department of Mathematics and Computer Science Databaser Obligatorisk opgave 2 Vejledende løsning Afleveres senest: Søndag d. 5. maj kl 23.59 Spilleregler Denne obligatoriske
Læs mereDynamisk PHP design OPDATERET
Denne guide er oprindeligt udgivet på Eksperten.dk Dynamisk PHP design OPDATERET I har måske undret jer over "http://bla.dk/?side=kontakt", her beskriver jeg hvordan, og hvorfor Skrevet den 03. Feb 2009
Læs mereHOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL
HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL Når man er logget på KMS systemet, vælges Dataudtræk under punktet Vælg modul, hvorefter der klikkes på Gå til: På næste side klikkes på knappen Opret:
Læs mereVÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING
VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING Copyr i g ht 2013, SAS Ins titut e Inc. All rights res er ve d. Livet som SAS-programmør er blevet lettere med SAS Enterprise
Læs mereFå sin querystring til at fungere. (Nybegyndere)
Denne guide er oprindeligt udgivet på Eksperten.dk Få sin querystring til at fungere. (Nybegyndere) Artikelen henvender sig til nybegyndere der har problemer med at få sin querystring til at fungere (Access/ASP).
Læs mereFlerbruger miljø, opdel database
Denne guide er oprindeligt udgivet på Eksperten.dk Flerbruger miljø, opdel database Denne artikel henvender sig primært til begyndere og let øvede brugere af Access der ønsker at vide noget om flerbruger
Læs mereXML Difftool brugervejledning
XML Difftool brugervejledning UNI C maj 2007 XML Difftool brugervejledning UNI C Maj 2007 Af UNI C Indhold 1 Kort om XML Difftool og Import... 1 1.1 XML Difftool... 1 1.2 Opbygning af XML import fil...
Læs mereRelationel Algebra og SQL
Relationel Algebra og SQL Indholdsfortegnelse Relationel Algebra og SQL...1 Indholdsfortegnelse...1 De oprindelige mængdeoperationer...2 1. UNION (foreningsmængde)...2 2. INTERSECTION (fællesmængde)...2
Læs mereGæstebog med validering opbygget med MySQL
Denne guide er oprindeligt udgivet på Eksperten.dk Gæstebog med validering opbygget med MySQL Dette er en simpel gæstebog, som kan hjælpe folk med at lave en velfungerende gæstebog uden alt for meget arbejde.
Læs mereA11: Last Year s Exam
A11: Last Year s Exam Agenda Design of Site map and Web- structure (3) Design of data model (1) Design of database transactions (2) Construction of HTML and PHP scripts (3) Exercise 3: Design of Site map
Læs mereMed register_globals = On får du automatisk adgang til en række variabelnavne i dit script.
Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.
Læs mereMålet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer
Læs mereObjektorientering og databaser
Databaser, efterår 2002 Objektorientering og databaser Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674
Læs mereSoftware Projekt NoSQL vs RMDB
Software Projekt NoSQL vs RMDB Skrevet af Carsten Sørensen, Hans Jørgen Frandsen, Peter Haislund Department of Computer Science, University of Aarhus Aabogade 34, 8200 Arhus N, Denmark 201200089, 19960442,
Læs mere1 Indlæsning af script
1 Indlæsning af script Når opgraderingen af invokeren er foretaget, skal du indlæse et script på den SQL server, hvor I skal modtage jeres SLS-data. Scriptet henter du her http://www.oes.dk/sw49118.asp
Læs mereAfleveringsopgave. Efterår 2001
Datalogi Database-kurset Efterår 2001 Afleveringsopgave Baseret på opgavetekst forfattet af Troels Andreasen, forår 2001 Let redigeret af Henning Christiansen, oktober 2001 Aflevering Opgaven afleveres
Læs mereInformation Integration
Databaser, efterår 2002 Information Integration Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072
Læs merePROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.
PROC TRANSPOSE SAS-tabellen - hensigtsmæssig lagring af data Copyright 2011 SAS Institute Inc. All rights reserved. Transponerede tabeller Brede eller smalle? Hvad: Brede tabeller har mange kolonner med
Læs mereLaserNet v6.6 Release Nyhedsbrev
LaserNet v6.6 Release Nyhedsbrev NY Input Management-Løsning! Indhold: LaserNet v6.6 LaserNet Webinars NY LaserNet Input Management-løsning Nyt Produkt: LaserNet Client Nye Features & Functions Ny medarbejder
Læs mereØvelse 9. Klasser, objekter og sql-tabeller insert code here
Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til
Læs mereSøren Løbner (lobner) ddb Databaser 2007 10 10
ddb Excercise Week 4 Fra relationships til relations Nu når vi har fået vores skemaer på plads, kan SQL udtrykkene til konstruktion af relationerne laves Det foregår ved at vi tager en 1 til 1 oversættelse
Læs mereDokumentering af umbraco artikeleksport:
Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.
Læs mereBegrynder til at lave log ind system
Denne guide er oprindeligt udgivet på Eksperten.dk Begrynder til at lave log ind system Hej Vil jeg gerne lave en lille programmering forklare til hvordan du laver din helt egen lille start på at log ind
Læs mereLog ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre
Denne guide er oprindeligt udgivet på Eksperten.dk Log ind med PHP Med denne guide lærer du hvordan du kan logge ind på din hjemmeside med PHP. Guiden viser dig hvordan koderne skal opstilles, og hvad
Læs mereOpgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..
Side 1 af 11 Dato: 07-09-2003 Opgaver i oprettelse af kunder og info i database med java. Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus,
Læs mere