---
title: "Datu bāzes izmērs"
canonical_url: "https://www.zone.lv/help/lv/kb/datu-bazes-izmers/"
post_type: "ht_kb"
published: "2024-11-13T13:32:23+00:00"
modified: "2024-11-13T13:32:23+00:00"
language: "lv"
author: "martti"
taxonomies:
  ht_kb_category:
    - name: "MariaDB / MySQL"
      url: "https://www.zone.lv/help/lv/kb-categories/mariadb-mysql/"
    - name: "Tehnisks"
      url: "https://www.zone.lv/help/lv/kb-categories/tehnisks/"
  ht_kb_tag:
    - name: "mariadb"
      url: "https://www.zone.lv/help/lv/kb-tags/mariadb/"
    - name: "mysql"
      url: "https://www.zone.lv/help/lv/kb-tags/mysql/"
---

# Datu bāzes izmērs

## Kas veido datu bāzes izmēru?

Datu bāzes kopējais izmērs ir tās tabulu izmēru summa.

Tabulas izmērs nav tikai tabulā redzamo rindu izmērs — tas ietver arī tabulas papildu funkcijas (dažādu veidu atslēgas un indeksus) un neizmantotu vietu, kas palikusi iepriekšējo pieprasījumu un darbību rezultātā.

Datu bāzes tabulas izmērs sastāv no trim daļām:

- dati
- indeksi
- virsizmaksas

Dati katram datu tipam tiek glabāti datu bāzes serverī failos, kas aizņem brīvo diska vietu serverī.

 Uzmanību! Pat ja rindu skaits un datu apjoms tabulā ir mazs vai tabula ir pilnībā tukša, tai joprojām var būt neizmantota vieta (virsizmaksas) iepriekšējo darbību dēļ, un līdz ar to tabulas faili, kuros ir šī neizmantotā vieta, joprojām aizņems vietu datu bāzes servera diskā.

## Kā apskatīt datu bāzes un tās tabulu izmēru?

Datu bāzes un tās tabulu izmēru var apskatīt, izmantojot dažādas klientprogrammas un phpMyAdmin, vai arī tieši no SSH termināļa.

 Ceļvedis [Kā piekļūt phpMyAdmin?](https://www.zone.lv/help/en/kb/how-to-access-phpmyadmin/)

Šeit izmantosim phpMyAdmin.

Pēc pieteikšanās phpMyAdmin kreisajā kolonnā izvēlies nepieciešamo datu bāzi — pirmajā cilnē `Structure` tiks parādītas visas tabulas, un pašās beigās, tabulas pēdējā rindā, būs redzams tabulu kopējais izmērs. Tomēr tas neietver tabulu virsizmaksas:

![phpMyAdmin - Datu bāzes tabulas](https://www.zone.lv/static/sites/5/phpmyadmin_database_tables-1.png)

Lai redzētu tabulas faktisko izmēru (dati + indeksi + virsizmaksas), atver tabulas cilni `Structure` un apakšsadaļā `Information` atrodi tabulu `Space usage`. Rinda `Effective` tajā ir tabulas faktiskais izmērs datu bāzes serverī:

![phpMyAdmin - Tabulas struktūra](https://www.zone.lv/static/sites/5/phpmyadmin_table_structure-1.png)

![phpMyAdmin - Tabulas diska vietas izmantojums](https://www.zone.lv/static/sites/5/phpmyadmin_space_usage-1.png)

## Kas ir tabulas virsizmaksas?

Virsizmaksas ir neatbrīvota MySQL / MariaDB datu bāzes tabulas vieta, kas ir piešķirta tabulai, bet netiek izmantota.

To var redzēt tabulā `information_schema.TABLES` kolonnā `Data_free`. Izmērs tiek rādīts baitos.

Data\_free rodas neizmantotas un fragmentētas vietas dēļ, kas veidojas, dzēšot rindas no tabulas (DELETE), atjauninot rindas (UPDATE) ar lielākām vērtībām, samazinot un pārkārtojot tabulas vietu, kā arī rezervējot vietu nākotnes vaicājumiem (INSERT, UPDATE).

 Data\_free Lai gan Data\_free vieta netiek izmantota un tieši neatspoguļojas datu bāzes izmērā, tā joprojām fiziski aizņem diska vietu datu bāzes serverī kā datu bāzes tabulas fails.

## Kā atrast tabulas ar lielām virsizmaksām?

Ja datu bāzē ir daudz tabulu un tu nezini, kurām no tām varētu būt lielas virsizmaksas, tad, nevis skatoties katras tabulas cilni Structure, ātrāks veids, kā atrast problemātisko tabulu, ir izmantot šādu SQL vaicājumu.

 Lai izpildītu SQL vaicājumu phpMyAdmin, atver cilni `SQL`, ieraksti vai ielīmē vaicājumu teksta laukā un pēc tam nospied pogu `Go`, lai izpildītu vaicājumu.

 ```
SHOW TABLE STATUS WHERE `Data_free` > 0;
```

Vaicājuma rezultātu tabulas kolonna `Data_free` parāda tabulas virsizmaksas; izmēri tiek rādīti baitos:

![phpMyAdmin - SQL vaicājums: SHOW TABLE STATUS](https://www.zone.lv/static/sites/5/phpmyadmin_show_table_status-1.png)

Detalizētāks SQL vaicājums, kas parāda izmērus megabaitos katram no trim datu tipiem atsevišķi un tabulas kopējo faktisko izmēru (dati + indeksi + virsizmaksas).
Aizstāj `[DATABASE_NAME]` ar reālo datu bāzes nosaukumu komandā:

```
SELECT `TABLE_SCHEMA` AS "Database", `TABLE_NAME` AS "Table", `ENGINE`, `ROW_FORMAT`, `TABLE_ROWS`, ROUND(((`DATA_LENGTH`) / 1024 / 1024), 2) AS "Data Size (MiB)", ROUND(((`INDEX_LENGTH`) / 1024 / 1024), 2) AS "Index Size (MiB)", ROUND(((`DATA_FREE`) / 1024 / 1024), 2) AS "Overhead (MiB)", ROUND(((`DATA_LENGTH` + `INDEX_LENGTH` + `DATA_FREE`) / 1024 / 1024), 2) AS "Total Size (MiB)" FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = '[DATABASE_NAME]' AND `DATA_FREE` > 0 ORDER BY `DATA_FREE` DESC;
```

![phpMyAdmin - SQL vaicājums: SELECT visu izmēru un kopējā izmēra rezultāti](https://www.zone.lv/static/sites/5/phpmyadmin_select_all_sizes_results-1.png)

Var redzēt, ka šīs WordPress options tabulas izmērs ir 113,3 MiB, bet neatbrīvotajā vietā ir “iestrēguši” 8337 MiB jeb 8,1 GiB — tas ir vairāk nekā 70 reizes lielāks apjoms nekā tabulas dati!

![phpMyAdmin - SQL vaicājums: SELECT visu izmēru un kopējā izmēra vaicājums](https://www.zone.lv/static/sites/5/phpmyadmin_select_all_sizes-1.png)

## Neizmantotās vietas atbrīvošana — tabulas optimizēšana

Lai atbrīvotu tabulas neizmantoto vietu, ir jāveic tabulas optimizēšana.

Lai optimizētu tabulu, tabulas cilnē `Structure` sadaļā `Space usage` ir saite `Optimize table`, kā arī tā ir pieejama cilnē `Operations`.

Alternatīvi tabulas optimizēšanai var izpildīt SQL vaicājumu (aizstāj `[DATABASE_NAME]` un `[TABLE_NAME]` komandā ar datu bāzes un tabulas nosaukumu):

```
OPTIMIZE TABLE `[DATABASE_NAME]`.`[TABLE_NAME]`;
```

 Uzmanību! Ļoti lielām tabulām optimizēšana var aizņemt ilgu laiku, kura laikā tabula var tikt bloķēta un tāpēc lietotnei nebūt pieejama.
Tāpēc ieteicams neveikt optimizēšanu pīķa noslodzes laikā.

Lasi vairāk attiecīgās datu bāzes dokumentācijā:
[MariaDB: OPTIMIZE TABLE](https://mariadb.com/kb/en/optimize-table/)
[MySQL: OPTIMIZE TABLE Statement](https://dev.mysql.com/doc/refman/en/optimize-table.html)
