Comunitatea PHP Romania
MightyDeals

Prima pagină Baze de date MySQL marime inregistrare mysql

marime inregistrare mysql

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Mesaj Mar Aug 07, 2012 4:55 pm
anshbach Junior Member

Mesaje: 31
Salut. Am 3 tabele in Mysql si folosesc ca storage engine MyISAM.

Fiecare tabela are urmatorul numar de inregistrari si
ocupa urmatorul spatiu de memorie:

Prima : 27 de inregistari care ocupa 8.1 kB
A doua: 28 de inregistrari care ocupa 19.2 kB
A treia: 35 de inregistrari care ocupa 33.8 kB.

Mentionez ca fiecare tabela are aceleasi coloane.
Care este logica?

Mesaj Mar Aug 07, 2012 5:35 pm
CoBrA90 Average Member

Mesaje: 147
Daca in tabela unu ai inregistrari de forma: 'a', 'b' etc si in tabela a 2a ai in coloane date de dimensiunile Luceafarului care ar fi explicatia ? :))

Mesaj Mar Aug 07, 2012 7:10 pm
anshbach Junior Member

Mesaje: 31
Tocmai asta este problema...inregistrarile sunt oarecum asemanatoare...

Mesaj Mar Aug 07, 2012 7:18 pm
CoBrA90 Average Member

Mesaje: 147
Pune intreaga problema:
- baza de date
- tabelele
- inregistrarile

Muta-ti baza pe localhost, lasa aceleasi tabele goale si atunci adauga aceleasi, dar ACELEASI inregistrai si sa observi atunci daca este o diferenta.

Mesaj Mie Aug 08, 2012 2:32 pm
mihaitha Avatar utilizator
Senior Member

Mesaje: 2346
Localitate: Sibiu
Studiaza un pic tipurile de date MySQL si termenul "row size".

Spatiul ocupat de datele dintr-o tabela difera de regula de volumul efectiv de date, si depinde de o multitudine de factori.

De exemplu, un VARCHAR iti va ocupa un spatiu egal cu numarul de caractere * dimensiunea unui caracter (un octet sau doi, in functie de encoding) + 1 octet sau 2 in care se retine lungimea string-ului.

Un INT va ocupa acelasi spatiu (4 octeti) indiferent daca campul contine valoarea 0, 1000 sau 4 miliarde. Asa e adresat.

Pe langa asta, exista si termenul de "overhead", mai ales in cazul tabelelor in motor MyISAM (care retine intreaga informatie a tabelei intr-un singur fisier). Astfel, daca la un moment dat intr-un camp VARCHAR scrii valoarea 'bubu', aceasta va ocupa sa zicem 5 octeti (4 caractere + lungimea). Datele ulterior adaugate in tabela se vor scrie dupa acesti 5 octeti. Mai tarziu venim si rescriem valoarea campului in 'bubulubu'. Aceasta valoare nu va incapea in cei 5 octeti disponibili (retine ca datele tabelelor MyISAM sunt secventiale, nu se pot fragmenta). Drept urmare, informatia din campul nostru se va muta intr-o alta locatie din fisier, unde are loc, lasand cei 5 octeti nefolositi (overhead). Ei vor fi folositi atunci cand in tabela se scrie o informatie care are loc acolo, altfel for ocupa spatiu pe disc degeaba pana cand se optimizeaza tabela.

Sper ca te-am lamurit. Succes.
Arguing with retards is like playing chess with a pigeon: no matter how good you are at chess, the pigeon is just going to knock over the pieces, crap on the board and strut around like it's victorious.

Mesaj Dum Apr 14, 2013 12:55 am
Google Bot New Member

Mesaje: 1

Înapoi la MySQL

Copyright © 2001-2013 PHP Romania Gazduire web | Haine online | Gazduire web | Campanii SMS | Gazduire Claus Web | Inregistrare Domenii | Anunturi | Jocuri cu bile
Furnizat de phpBB® Forum Software © phpBB Group
Translation/Traducere: phpBB România
Powered by Simplis