De SQL is zeer eenvoudig te bedienen en efficiënt voor de gebruiker, aangezien de commando’s een eenvoudige syntaxis hebben. Maar de efficiëntie van de SQL-opdracht is onderhevig aan verschillende databasefuncties, met name in termen van hun individuele rekentijd. Ook betekent de efficiëntie van de taal niet dat het optimaliseren van de taal ook eenvoudiger zou zijn. Elke database vereist unieke manieren om te worden afgestemd, afhankelijk van de individuele behoeften.
Dat is de reden waarom, het gebruik van de beste SQL-database is aan te raden, zo veel als het kennen van verschillende manieren om te optimaliseren of stimuleren van de database, om zo de beste prestaties uit te garanderen. De reikwijdte van het optimaliseren van SQL Database voor ontwikkelaars zoals zeg, Senior Java j2ee ontwikkelaars verschillen van het werk van een Database Administrator (DBA) in sommige opzichten en zijn gelijk in andere opzichten. In grote bedrijven zijn ontwikkelaars en DBA’s vaak verplicht om samen te werken, waar, het is gezien dat vaker wel dan niet, een conflict ontstaat tussen de twee teams. Er zijn verschillende manieren waarop SQL-databases kunnen worden getuned.
- NEXT GENERATION DEVOPS: VALUE STREAM MANAGEMENT
- HOW TO GROW YOUR SERVERLESS TEAM
- MLOPS: CONTINUOUS DELIVERY OF MACHINE LEARNING SYSTEMS
- Goede indexering
- SEE MORE: Top databases in 2017: Trends voor SQL, NoSQL, Big Data, Snelle Data
- Vraag alleen de relevante gegevens op
- Het wegwerken van gecorreleerde subqueries
- SEE MORE: Team MySQL v Team PostgreSQL: Deze bedrijven zetten erop in
- Tijdelijke tabellen gebruiken of vermijden naargelang de behoefte
- Vermijd coderingslussen
- Uitvoeringsplannen
NEXT GENERATION DEVOPS: VALUE STREAM MANAGEMENT
Helen Beal (DevOps Institute.)
HOW TO GROW YOUR SERVERLESS TEAM
Sheen Brisals (De LEGO Groep)
MLOPS: CONTINUOUS DELIVERY OF MACHINE LEARNING SYSTEMS
Hauke Brammer (finpair GmbH)
Goede indexering
Indexering is in feite een gegevensstructuur die helpt het proces van het terugvinden van gegevens in het algemeen te versnellen. Unieke indexering is een vorm van indexering waarbij afzonderlijke gegevenskolommen worden gecreëerd zonder dat deze elkaar overlappen. Een goede indexering zorgt voor een snellere toegang tot de database. Overdreven indexering of helemaal geen indexering zijn beide verkeerd. Zonder enige indexering zal de verwerking zeer traag verlopen, terwijl alles indexeren de insert en update triggers ineffectief zal maken.
SEE MORE: Top databases in 2017: Trends voor SQL, NoSQL, Big Data, Snelle Data
Vraag alleen de relevante gegevens op
Het specificeren van de gegevens die men nodig heeft, maakt precisie bij het ophalen mogelijk. Het gebruik van de commando’s *
en LIMIT
, in plaats van SELECT *
naar behoefte, is een goede manier om de database te tunen, terwijl voorkomen wordt dat de hele set gegevens wordt opgehaald wanneer de gebruiker slechts een bepaald deel ervan wil hebben. Natuurlijk zal dit niet nodig zijn wanneer de hoeveelheid gegevens in totaal kleiner is. Maar wanneer gegevens uit een grote bron worden opgevraagd, zou het specificeren van de benodigde gedeelten veel essentiële tijd besparen.
Het *
commando is voor gebruik bij het specificeren van gegevens uit kolommen, en het LIMIT
commando is wanneer de gebruiker gegevens uit een bepaald aantal rijen uit de partij nodig heeft. Zuinig selecteren is niet echt een noodzakelijke regel. Het helpt echter wel systeemfouten in de toekomst te voorkomen. Ook het beperken en specificeren van de gegevens vermindert de verdere noodzaak van het optimaliseren van de database tot een groot deel.
Het wegwerken van gecorreleerde subqueries
Een gecorreleerde subquery is in principe afhankelijk van de bovenliggende of buitenste query. Dit soort zoekopdrachten wordt rij voor rij uitgevoerd. Dat betekent dat het de totale snelheid van het proces vermindert. Dit probleem ligt meestal in het commando WHERE
van de buitenste query, waarbij de subquery wordt uitgevoerd voor elke rij die door de bovenliggende query wordt teruggegeven, waardoor het hele proces wordt vertraagd en de efficiëntie van de database wordt verminderd. Dus, een betere manier om de database te tunen, in dit geval, is om het INNER JOIN
commando te gebruiken, in plaats van de gecorreleerde subquery. Maar in bepaalde gevallen is het gebruik van correlated sub-query essentieel.
SEE MORE: Team MySQL v Team PostgreSQL: Deze bedrijven zetten erop in
Tijdelijke tabellen gebruiken of vermijden naargelang de behoefte
Als een code op een eenvoudige manier goed geschreven kan worden, is het absoluut niet nodig om het complex te maken met tijdelijke tabellen. Uiteraard is het gebruik van tijdelijke tabellen in dergelijke gevallen wel aan te bevelen als er een specifieke procedure moet worden opgezet waarvoor meerdere query’s nodig zijn. Tijdelijke tabellen worden vaak afgewisseld door subquery’s, maar men moet rekening houden met de specifieke efficiëntie die elk van deze in afzonderlijke gevallen zou opleveren.
Vermijd coderingslussen
Vermijding van coderingslussen is zeer nodig om vertraging van de hele reeks te voorkomen. Dit kan worden bereikt door gebruik te maken van de unieke UPDATE
of INSERT
commando’s met individuele rijen, en door ervoor te zorgen dat het commando WHERE
de opgeslagen gegevens niet bijwerkt in het geval het een overeenkomende reeds bestaande gegevens vindt.
Uitvoeringsplannen
Het door de optimizer gemaakte uitvoeringsplan speelt een belangrijke rol bij het tunen van SQL-databases. Ze helpen ook bij het maken van de juiste indexen. Hoewel, de belangrijkste functie is om grafisch de verschillende methoden om gegevens op te halen weer te geven. Dit, op zijn beurt, helpt bij het creëren van de benodigde indexen en het doen van de andere vereiste stappen om de database te optimaliseren.
Natuurlijk zijn er tonnen van andere manieren waarop men kan afstemmen hun SQL-database op de meest efficiënte manier. Ook is de kans groot dat de hierboven genoemde stappen niet voor alle databases de juiste keuze zijn. Elke database zal optimalisatietechnieken nodig hebben die uniek zijn voor haar behoeften.