sql >> Database teknologi >  >> RDS >> Mysql

Bliver pladsen optaget af slettede rækker genbrugt?

Det er paranoia :)

DB'er vokser ikke unødigt i størrelse, men for ydeevneproblemer frigøres der heller ikke plads.

Hvad du sandsynligvis har hørt er, at hvis du sletter poster, bliver pladsen ikke givet tilbage til operativsystemet . I stedet opbevares det som et tomt rum, som DB kan genbruge bagefter.

Dette er fordi:

  • DB skal have noget HD-plads for at gemme sine data; hvis den ikke har nogen plads, reserverer den noget tom plads i starten.
  • Når du indsætter en ny række, bruges et stykke af det mellemrum.
  • Når du løber tør for ledig plads, reserveres en ny blok, og så videre.
  • Nu, når du sletter nogle rækker , for at undgå at reservere flere og flere blokke, holdes dens plads fri, men den gives aldrig tilbage til operativsystemet, så du kan bruge den igen senere uden behov for at reservere nye blokke.

Som du kan se, er plads er genbrugt, men aldrig givet tilbage. Det er nøglepunktet i dit spørgsmål.



  1. Kan ikke forhindre SQLiteConnection-objektlækage

  2. Ukendt kolonne i 'have-sætning'

  3. sequelize tabel uden kolonne 'id'

  4. generere enum klasse fra tabel med JOOQ