/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Ændring af tabelstørrelse i MySQL
Fra : Lars L. Christensen


Dato : 28-01-05 10:27

Davser igen

Endnu et spørgsmål har meldt sig med en af mine tabeller...

Jeg har en tabel, der pt. er vokset til 4 GB data, hvilket desværre ikke
helt er nok for mit vedkommende. OS har ikke problemer med at håndtere
større filer (Debian med en 2.6.8-2 kerne og ext3 kørende på datadrevet).

Jeg har set at det er noget med at jeg skal alter tabellen mht. max rows,
men jeg kan bare ikke lige gennemskue hvordan og hvad nøjagtigt...

Håber der er nogen der kan hjælpe mig :)

mvh
Lars

 
 
Peter Brodersen (29-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 29-01-05 13:56

On 28 Jan 2005 11:27:09 +0200, "Lars L. Christensen"
<llc@dansketelecom.com> wrote:

>Endnu et spørgsmål har meldt sig med en af mine tabeller...
>
>Jeg har en tabel, der pt. er vokset til 4 GB data, hvilket desværre ikke
>helt er nok for mit vedkommende. OS har ikke problemer med at håndtere
>større filer (Debian med en 2.6.8-2 kerne og ext3 kørende på datadrevet).

Har du oplevet problemer (og i så fald hvilke)? Du behøver ikke at
indstille noget i MySQL for at lade MyISAM-tabeller gå over de 4GB.
Selv på en gammel MySQL 3.23 under en 2.4-kerne er der ingen problemer
- max-størrelse for en tabel er 2^63 bytes (8 petabyte).

Gamle ISAM-tabeller kan dog maksimalt være 4GB store. Under alle
omstændigheder er ISAM ved at blive udfaset, og lige præcis
ISAM-tabeller kan du lige så godt og snarest muligt konvertere til
MyISAM:

ALTER TABLE tbl_name TYPE = MYISAM;

... men medmindre, det er temmeligt gamle tabeller oprettet under en
gammel version af MySQL, så vil de "mindst" være MyISAM i forvejen.

Kilde:
http://dev.mysql.com/doc/mysql/en/table-size.html

--
- Peter Brodersen

Lars L. Christensen (30-01-2005)
Kommentar
Fra : Lars L. Christensen


Dato : 30-01-05 19:02

Peter Brodersen <usenet@ter.dk> wrote in news:ctg15b$hd$1
@katie.ellegaard.dk:

> On 28 Jan 2005 11:27:09 +0200, "Lars L. Christensen"
> <llc@dansketelecom.com> wrote:
>
>>Endnu et spørgsmål har meldt sig med en af mine tabeller...
>>
>>Jeg har en tabel, der pt. er vokset til 4 GB data, hvilket desværre
ikke
>>helt er nok for mit vedkommende. OS har ikke problemer med at håndtere
>>større filer (Debian med en 2.6.8-2 kerne og ext3 kørende på
datadrevet).
>
> Har du oplevet problemer (og i så fald hvilke)? Du behøver ikke at
> indstille noget i MySQL for at lade MyISAM-tabeller gå over de 4GB.
> Selv på en gammel MySQL 3.23 under en 2.4-kerne er der ingen problemer
> - max-størrelse for en tabel er 2^63 bytes (8 petabyte).
>
> Gamle ISAM-tabeller kan dog maksimalt være 4GB store. Under alle
> omstændigheder er ISAM ved at blive udfaset, og lige præcis
> ISAM-tabeller kan du lige så godt og snarest muligt konvertere til
> MyISAM:
>
> ALTER TABLE tbl_name TYPE = MYISAM;
>
> .. men medmindre, det er temmeligt gamle tabeller oprettet under en
> gammel version af MySQL, så vil de "mindst" være MyISAM i forvejen.
>
> Kilde:
> http://dev.mysql.com/doc/mysql/en/table-size.html
>

Jeg kører allerede MyISAM og OS har jeg lige sikret igen, at den kan
klare over 4 GB datafiler.

Min tabel indeholder pt. 35.514.567 records og når jeg forsøger at
indsætte yderligere entries, får jeg at vide at tabellen er full.

Yderligere ideer?

mvh
Lars

Peter Brodersen (30-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 30-01-05 20:35

On 30 Jan 2005 20:02:13 +0200, "Lars L. Christensen"
<llc@dansketelecom.com> wrote:

>Min tabel indeholder pt. 35.514.567 records og når jeg forsøger at
>indsætte yderligere entries, får jeg at vide at tabellen er full.
>
>Yderligere ideer?

Hm, når du får den fejl, får du så en eller anden fejlkode (error
number)? Og hvilken fejl får du præcist? Jeg kan ikke lige finde en
passende besked i perror-listen, der går på en sådan fejl - det
nærmeste er "No space left on device" eller "Lock table is full".

Jeg har en tabel med over 600 mio. records, der kører på en MySQL
3.23-server under en 2.4-kerne. Datafilen er over 30GB og indexfilen
er over 20GB (ext3-filsystem), så det undrer mig temmeligt meget, at
du får sådan en fejl.

Du har ikke enabled quota eller lignende spøjst?

--
- Peter Brodersen

Lars L. Christensen (30-01-2005)
Kommentar
Fra : Lars L. Christensen


Dato : 30-01-05 19:42

Peter Brodersen <usenet@ter.dk> wrote in news:ctjcsh$8q3$1
@katie.ellegaard.dk:

> On 30 Jan 2005 20:02:13 +0200, "Lars L. Christensen"
> <llc@dansketelecom.com> wrote:
>
>>Min tabel indeholder pt. 35.514.567 records og når jeg forsøger at
>>indsætte yderligere entries, får jeg at vide at tabellen er full.
>>
>>Yderligere ideer?
>
> Hm, når du får den fejl, får du så en eller anden fejlkode (error
> number)? Og hvilken fejl får du præcist? Jeg kan ikke lige finde en
> passende besked i perror-listen, der går på en sådan fejl - det
> nærmeste er "No space left on device" eller "Lock table is full".
>
> Jeg har en tabel med over 600 mio. records, der kører på en MySQL
> 3.23-server under en 2.4-kerne. Datafilen er over 30GB og indexfilen
> er over 20GB (ext3-filsystem), så det undrer mig temmeligt meget, at
> du får sådan en fejl.
>
> Du har ikke enabled quota eller lignende spøjst?
>

Ingen spøjse ting her. Jeg har dog en mistanke til, at der er problemer med
max_data_length, som jeg umiddelbart ser ud til at have ramt loftet af og
dermed 4 GB grænsen.

Jf. http://dev.mysql.com/doc/mysql/en/full-table.html skulle det hjælpe at
starte mysqld med --big-tables, men jeg kan ikke lige finde
konfigurationsfilen på en debian til at få den variabel parset med ved
opstart af serveren :(

mvh
Lars

Peter Brodersen (30-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 30-01-05 21:02

On 30 Jan 2005 20:42:26 +0200, "Lars L. Christensen"
<llc@dansketelecom.com> wrote:

>Jf. http://dev.mysql.com/doc/mysql/en/full-table.html skulle det hjælpe at
>starte mysqld med --big-tables, men jeg kan ikke lige finde
>konfigurationsfilen på en debian til at få den variabel parset med ved
>opstart af serveren :(

Du kan rette i /etc/my.cnf (der er et symlink til /etc/mysql/my.cnf).
Under [mysqld] tilføjer du så blot:
big-tables

Dog, fra manualen: "As of MySQL 4.0, you should normally never need to
set this variable, because MySQL automatically converts in-memory
tables to disk-based tables as necessary. This variable previously was
named SQL_BIG_TABLES."
http://dev.mysql.com/doc/mysql/en/set-option.html

Jeg ville nok snarere kigge efter om max_data_length var sat til noget
(lavt) i din my.cnf. Jeg har ikke sat den til noget på nogen af de
servere, jeg administrerer.

Men hvad version af mysqld kører du? Og hvilken fejlkode/fejlbesked
fik du helt præcist?

--
- Peter Brodersen

Lars L. Christensen (30-01-2005)
Kommentar
Fra : Lars L. Christensen


Dato : 30-01-05 21:35

Peter Brodersen <usenet@ter.dk> wrote in
news:ctjegp$9ng$2@katie.ellegaard.dk:

> On 30 Jan 2005 20:42:26 +0200, "Lars L. Christensen"
> <llc@dansketelecom.com> wrote:
>
>>Jf. http://dev.mysql.com/doc/mysql/en/full-table.html skulle det
>>hjælpe at starte mysqld med --big-tables, men jeg kan ikke lige finde
>>konfigurationsfilen på en debian til at få den variabel parset med ved
>>opstart af serveren :(
>
> Du kan rette i /etc/my.cnf (der er et symlink til /etc/mysql/my.cnf).
> Under [mysqld] tilføjer du så blot:
> big-tables
>
> Dog, fra manualen: "As of MySQL 4.0, you should normally never need to
> set this variable, because MySQL automatically converts in-memory
> tables to disk-based tables as necessary. This variable previously was
> named SQL_BIG_TABLES."
> http://dev.mysql.com/doc/mysql/en/set-option.html
>
> Jeg ville nok snarere kigge efter om max_data_length var sat til noget
> (lavt) i din my.cnf. Jeg har ikke sat den til noget på nogen af de
> servere, jeg administrerer.
>
> Men hvad version af mysqld kører du? Og hvilken fejlkode/fejlbesked
> fik du helt præcist?
>

ok, jeg gjorde som beskrevet lidt længere nede på den pågældende side og
ændrede antallet af rækker, der er tilladt i tabellen og det hjalp en hel
del...

fejlkoden var table full.

mvh
Lars

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste