Toon posts:

[SQL] Boek over optimaliseren queries voor MS SQL*

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben op zoek naar een goed boek over het optimaliseren van SQL-queries in het algemeen, en wat ook dieper ingaat over het optimaliseren van queries specifiek voor MS SQL.

Owja, links naar goede online documentatie zijn ook zeer welkom, maar t gaat vooral om een echt boek

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Uhm misschien een tip, weet niet of je beetje goede baas hebt :) maar Computrain heeft een goede cursus, optimising Sqlserver, een collega van mij was er tenminste zeer te spreken over.

Zelf ben ik zeer tevreden over dit boek:

Writing Stored Procedures for Microsoft SQL Server van Sams Publishing, het is niet specifiek op Optimalisatie geschreven maar het helpt je wel meer uit sqlserver te halen, met name staat er een goed stuk in over hoe je het execution plan kan analyseren.

Daarnaast is www.swynk.com een goede bron.

Verwijderd

De site en newsletter van sqlserver magazine: www.sqlmag.com

Verder kun je veel zelf doen, SQLServer biedt je veel tools die je helpen bij het doorgronden van je queries en waar bottlenecks zitten: query analyzer en de profiler. Op de site van sqlserver magazine kun je artikelen vinden bijvoorbeeld hoe deze tools te gebruiken om je queries te analyseren en te verbeteren. het forum aldaar is ook erg goed, er zitten veel mensen die wetenwaarover ze praten.

Query optimalisatie is niet 1 2 3 in een boek te gieten. Er zijn een aantal standaard dingen waar iedere query wel aan moet voldoen wil hij snel zijn, maar de specifieke dingen die in een bepaalde situatie veel performance schelen zijn zo afhankelijk van de situatie en de gebruikte methode van dataretrieval/manipulatie (je kunt nl. op meerdere manieren met je data omgaan...) dat een boek wel een situatie kan schetsen dat snel is, maar dat het voor jouw situatie niet van belang is.

Het is verder efficienter om goede SQL technieken aan te leren dan op low level niveau een paar cycles te winnen. Een goed voorbeeld hiervan is:

http://groups.google.com/groups?q=group:comp.databases.theory+parent+child+trees+SQL&hl=en&selm=c0d87ec0.0111201021.2fd9ddbe%40posting.google.com&rnum=1

Onderaan dit bericht vind je de titel van het boek van deze meneer. Het is een algemeen SQL boek, maar wel een boek dat meer inzicht geeft in de algoritmen achter SQL queries, waarbij je veelal veel snellere queries mee kunt maken dan door bv maar lukraak ergens indices op te definieren.

Houdt verder rekening met:
• Views. Dit zijn de vaak vergeten holy grails. Een query met een ellenlange join, kun je beter als view opslaan en daar een select op doen. Je select is dan veel sneller. (Lees artikelen over views en hoe ze je kunnen helpen, bv op www.sqlmag.com)
• Fill factor van indices. Een index is niet een instant snelheidsverhoger: een niet goed gebalanceerde, gevulde index werkt vertragend of levert maar amper snelheidswinst. (Hier zijn veel artikelen over geschreven, via google of sqlserver sites of zelfs books online makkelijk vindbaar)
• Stored procedures. Database logica is veel efficienter zodra het is geimplementeerd als een stored procedure. Stored procedures op temp tables daarentegen zijn soms erg traag omdat ze elke keer moeten worden gecompileerd bij temptable declaraties in IF BEGIN...END constructies. Lees artikelen hierover.
• Datafile management. SQLServer heeft de mogelijkheid tot het spreiden van je datafiles over meerdere disks. Bij een high-load server, kan het erg efficient zijn de logfiles op een aparte harddisk te plaatsen en bv voor elke database een aparte harddisk te gebruiken (indien je weinig databases in je SQLServer hebt hangen :)) of iig een aparte harddisk voor de tempdb. RAID werkt lang niet altijd snelheidverhogend bij database servers. Hier zijn ook veel artikelen over geschreven. Lees ze.
• Hardware / OS tuning. Wat voor hardware is efficient voor een database server? Een veelproc systeem of een veel memory systeem? Lees de artikelen hierover.
• Connection pooling / database connections. Gisteren op T.net nog een waardeloos artikel over een test met de JDBC driver voor SQLserver vs. andere databases. Met OleDB fietste SQLserver alle databases er uit, met JDBC werd de database laatste. Het is erg belangrijk dat je applicatie die de data betrekt uit de database de juiste manier gebruikt om database connections te sharen en te hergebruiken. Tenslotte merk je in je data-betrekkende applicatie of de database 'traag' is of niet. Gebruik je wel connectionpooling? Zijn je ADO gebruikende routines wel zo opgezet dat ze database logica overlaten aan stored procs of ga je bv joins in business logic code doen? Lees de artikelen over n-tier development en Windows DNA op http://msdn.microsoft.com
• Locking, serialization, transactions. Blokkeer je met onnodige transactions tabellen die veelvuldig worden geraadpleegd? Wat voor lockingmechanismen heeft SQLServer en hoe pas ik welke toe zodat je systeem EN veilig blijft (geen datacorruption) EN efficient?

En zo zijn er nog wel een aantal zaken op te noemen die meespelen in het efficienter maken van het complete plaatje. Een boek is leuk, maar geen boek behandelt alle bovenstaande punten uitvoerig.

Essentieel is (en wellicht kun je daarmee een paar boeken uitzoeken):
• Waar stop ik de database logica (dus welke layer gaat welke functionaliteit uitvoeren (stored procs, business logic) ?
• Hoe betrek ik op de meest efficiente manier data uit mn database in de situaties die ik kan onderscheiden (views, stored procs, simpele ado queries) ?
• Hoe tune ik SQLServer?
• Hoe pas ik geavanceerde technieken toe? (transactions, locking mechanismen etc) ?

Door de books online artikelen hierover door te nemen doe je de basiskennis op om te bepalen mbv query analyser en de profiler of je efficient omgaat met de resources die je gebruikt. Online articles en how-to's kunnen je helpen in specifieke situaties.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51

https://fgheysels.github.io/


Verwijderd

Als je een goed boek wil hebben over SQL- Tabellen, Triggers en Stored Procedures kijk dan eens ff op de sams site

http://www.samspublishing.com

De site die hier boven genoemd word is zeker de moeite waard. Alleen netjes werken en de goeie types gebruiken help al een hoop.

succes

Verwijderd

Op donderdag 28 februari 2002 12:19 schreef whoami het volgende:
Een goede link:

http://www.sql-server-performance.com/
idd! flop, de favorites in! :)

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Wat ook aardig in performance schijnt te schelen is om een database readonly te maken, wij hebben onlangs een site gebouwt waar we dat toepassen, wij gaan zelf niet over hosting en optimalisatie maar zij passen dus dat toe.

Verwijderd

Topicstarter
Op donderdag 28 februari 2002 12:54 schreef raptorix het volgende:
Wat ook aardig in performance schijnt te schelen is om een database readonly te maken, wij hebben onlangs een site gebouwt waar we dat toepassen, wij gaan zelf niet over hosting en optimalisatie maar zij passen dus dat toe.
Read-only maken kan alleen als de gegevens die in je database staan niet worden aangepast, wat in het geval van de database waarmee ik moet werken niet het geval is.

Wat betreft het tunen van de database: dit is al gedaan

Het enigste wat dus nog geoptimaliseerd moet worden zijn de queries.
Pagina: 1