optimize table

Door De VeeWee, 20 jaar geleden, 3.701x bekeken

Op aanraden van bas is hier een scriptje om te zien of er overhead is op bepaalde tabellen en het script verwijderd deze overhead dan ook.

je kan zelf je tabellen invullen, toevoegen enzovoort
je moet ook nog user, pass en database ingeven, en je kan ook de foutmeldingen veranderen..

Hopelijk heb je er iets aan!
(in het voorbeeld heb ik wel mijn eigen tabellen gebruikt!!)

edit:

overhead = wanneer er verschillende rijen uit je db zijn verwijderd, dan op 1 of andere manier komt er een overhead.. dit is dus data die er wel is maar nergens voor dient (staat ook bij de reacties :p)

Voorbeeld: http://members.lycos.nl/fauvee/overhead.php

Gesponsorde koppelingen

PHP script bestanden

  1. optimize-table

 

Er zijn 18 reacties op 'Optimize table'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Appz
Appz
20 jaar geleden
 
0 +1 -0 -1
wat is precies een 'overhead'?
Bas Kreleger
Bas Kreleger
20 jaar geleden
 
0 +1 -0 -1
wanneer er verschillende rijen uit je db zijn verwijderd, dan op 1 of andere manier komt er een overhead.. dit is dus data die er wel is maar nergens voor dient.. ik heb het nog niet 'erg' meegemaakt op een paar bytes na.. het meeste overhead wat ik heb meegemaakt is iets van 8000+ Bytes. :)
Rick
Rick
20 jaar geleden
 
0 +1 -0 -1
als er veel rijen worden toegevoegd en verwijderd dan krijg je overhead ja, dit kan op een gegeven moment ook best veel worden (kheb iig al meegemaakt dat 20% van een tabel overhead was)
en dat is nog best veel bij een tabel van ~240mb ;)
Rick
Rick
20 jaar geleden
 
0 +1 -0 -1
als er veel rijen worden toegevoegd en verwijderd dan krijg je overhead ja, dit kan op een gegeven moment ook best veel worden (kheb iig al meegemaakt dat 20% van een tabel overhead was)
en dat is nog best veel bij een tabel van ~240mb ;)
J.somhorst
j.somhorst
20 jaar geleden
 
0 +1 -0 -1
als iedereen gewoon zorgt dat aan het eind van zijn scripts een mysql query wordt gestuurd die zegt dat de database moet worden geoptimized.. dan is er toch niks aan de hand.. maar ja wie weet dat nou dat er overhead onstaat.. niemand ( en meetal wordt er gebruik gemaakt van zeer kleine databases wat jeook simpel in een tekstfile kan flansen en dan is overhead iets waar je niet naar hoeft te kijken )


19 jaar geleden
 
0 +1 -0 -1
Heeft Overhead eigelijk "schadelijke" gevolgen i.v.m snelheid e.d? Of is het voldoende dat ik eens per jaar ofzo ff mijn tabellen optimalliseer?
De VeeWee
de VeeWee
19 jaar geleden
 
0 +1 -0 -1
het heeft gevolgen op je tabel, maar als je tabel niet te groot is is deze verwaarloosbaar klein, het zal niet superveel langer duren als je het niet regelmatig verwijderd...
ik zou gewoon je tabel optimaliseren nadat je een bepaalde hoeveelheid rijen hebt verwijderd...


19 jaar geleden
 
0 +1 -0 -1
Nu heb ik op de server enkele tabellen geoptimaliseerd, maar kreeg een foutmelding: #1016 - Can't open file: 'br_nieuws.MYD'. (errno: 144)
Onder records,type en groote staat nu te lezen: in gebruik. Ik kan dus niet de geoptimaliseerde tab meer bekijken of bewerken. Wat is hieraan te doen?
Henk
Henk
19 jaar geleden
 
0 +1 -0 -1
Handig script, ik krijg alleen de volgende foutmelding:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/blabla/overhead.php on line 29
Er is geen overhead in tabel1!

Wie o wie weet er raad?
De VeeWee
de VeeWee
19 jaar geleden
 
0 +1 -0 -1
hallo,

je kan een @ zetten voor die mysql_fetch_array, zo krijg je deze warning niet.
je moet dan wel even zien of de code ook nog goed werkt door een tabel te maken en er overhead in te creëren (rijen verwijderen)

mvg
Jelmer -
Jelmer -
19 jaar geleden
 
0 +1 -0 -1
@VeeWee: hij geeft de waarschuwing dat hij het niet doet. Je kan de waarschuwing wel onderdrukken, maar er zit gewoon een fout in de query.
Zet eens achter alle mysql_query(watdanook) or die(mysql_error()); en post de error.
Christof_G
Christof_G
19 jaar geleden
 
0 +1 -0 -1
Er zijn verkeerde haakjes gebruikt, vervang ` door '
$res = mysql_query("SHOW TABLE STATUS LIKE '".$table."'");
Joeri
Joeri
17 jaar geleden
 
0 +1 -0 -1
is toch niet wil gewoon zeggen dat er geen resultaat is en dat er dus niets opgehaald kan worden met de mysql_fetch_array(); vandaar de error en moet je inderdaad @ voor je query plaatsen voor die error te onderdrukken zodat enekel de boodschap "Er is geen overhead in tabel1" wordt weergegeven. Dat is tenslotte de bedoeling he.

Grtz.
Steen
steen
15 jaar geleden
 
0 +1 -0 -1
J krijgt toch geen overhead als je aan het eind van een query:
mysql_free_reslut($query);
mysql_close();

Neerzet?
De VeeWee
de VeeWee
15 jaar geleden
 
0 +1 -0 -1
Hallo,

Daar heb je het mis. Overhead creëer je altijd als je een rij verwijderd uit een database. De data is verwijderd maar de plaats die de data mocht innemen is nu onbruikbaar. Als je dan de database optimaliseert dan wordt deze plaats terug vrijgemaakt. (In het echt loopt het nog iets anders, maar ik zeg het maar zo om het simpel te houden :) )

Die mysql_free_result functie dient voor grootte querys. Als je bijvoorbeeld 2000 resultaten van een query krijgt. Dan verbruikt dit redelijk veel intern geheugen. De functie mysql_free_result zorgt er dan voor dat het resultaat niet meer in het geheugen blijft zitten. Persoonlijk ben ik geen voorstander van de functie omdat je best meerdere kleine queries schrijft. En het geheugen wordt toch na het uitvoeren van het script leeggemaakt ...
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
Overhead zit in de database en niet in je PHP. mysql_free_result() speelt zich af binnen PHP en doet helemaal niets in de database zelf.

OPTIMIZE is trouwens wel een gevaarlijke functie, het kan de tabel die je optimaliseert, vernietigen... Voordat je OPTIMIZE gebruikt, zul je dus eerst moeten controleren of er wel voldoende schijfruimte beschikbaar is, anders kunnen de dingen gruwelijk mis gaan. Optimaliseren krijgt dan wel een hele bijzondere betekenis.
Riemer
Riemer
15 jaar geleden
 
0 +1 -0 -1
Als je meer gebruik maakt van vaste lengtes voor records lijkt het mij zo dat er minder overhead is, niet?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
Nee, een record die is verwijderd neemt nog steeds ruimte in beslag. Dáár zit de overhead en dat heeft niks met een variabele lengte te maken.

Maar goed, voor de meeste scriptjes hier op phphulp is de overhead dermate klein dat je hier zelden of nooit serieus naar hoeft te kijken.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. optimize-table

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.