sql >> Database >  >> RDS >> Mysql

Wordt de ruimte die wordt ingenomen door verwijderde rijen opnieuw gebruikt?

Het is paranoia :)

DB's worden niet onnodig groot, maar voor prestatieproblemen komt er ook geen ruimte vrij.

Wat je waarschijnlijk hebt gehoord, is dat als je records verwijdert, die ruimte niet wordt teruggegeven aan het besturingssysteem . In plaats daarvan wordt het bewaard als een lege ruimte voor de DB om daarna opnieuw te gebruiken.

Dit komt omdat:

  • DB heeft wat HD-ruimte nodig om zijn gegevens op te slaan; als het geen ruimte heeft, reserveert het eerst wat lege ruimte.
  • Als je een nieuwe rij invoegt, wordt een stukje van die spatie gebruikt.
  • Als je geen vrije ruimte meer hebt, wordt er een nieuw blok gereserveerd, enzovoort.
  • Nu, wanneer u enkele rijen verwijdert , om te voorkomen dat er steeds meer blokken worden gereserveerd, wordt de ruimte vrijgehouden maar nooit teruggegeven aan het besturingssysteem, zodat u deze later opnieuw kunt gebruiken zonder dat u nieuwe blokken hoeft te reserveren.

Zoals je kunt zien, is de ruimte is hergebruikt, maar nooit teruggegeven. Dat is het belangrijkste punt van uw vraag.



  1. Hoe PLAFOND() werkt in MariaDB

  2. MYSQL Parent Child Dezelfde tabel; PHP Nest Children Within Parents als een multidimensionale array

  3. MySQL &PHP:zoeken op meerdere trefwoorden

  4. is het een goede gewoonte om mysql_free_result($result) te gebruiken?