|
| MySQL - Hvordan får jeg den til at sluge m~ Fra : Nicolai |
Dato : 27-07-04 19:11 |
|
På en server med 2gb ram sluger den kun 256mb - til gengæld knokler diskene...
Hvordan får jeg MySQL til at sluge hvad der er af ram?
--
/Nicolai
| |
Bent Stigsen (27-07-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 27-07-04 21:58 |
|
Nicolai wrote:
> På en server med 2gb ram sluger den kun 256mb - til gengæld knokler diskene...
>
> Hvordan får jeg MySQL til at sluge hvad der er af ram?
>
> --
>
> /Nicolai
>
>
Ved at ændre på buffer-størrelserne i "my.ini"
læs her:
http://dev.mysql.com/doc/mysql/en/Server_parameters.html
Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
regne lidt på det.
/Bent
| |
Kim Emax (28-07-2004)
| Kommentar Fra : Kim Emax |
Dato : 28-07-04 00:11 |
|
Bent Stigsen wrote:
> Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på
> dine tabeller/indexes og sikkert nogle typiske forespørgsler, og
> derefter nok regne lidt på det.
Explain er din ven:
EXPLAIN SELECT * FROM tabel1, tabel2 WHERE tabel1.id=tabel2.tabel_id AND
noget='noget andet';
--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk
| |
Nicolai (28-07-2004)
| Kommentar Fra : Nicolai |
Dato : 28-07-04 07:58 |
|
> Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
De stod til 256M - har ændret til 1024M og genstartet servicen.
Burde det være nok? :)
> Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> regne lidt på det.
Helt optimalt ja ;)
Foreløbig tak!
| |
Jesper Krogh (28-07-2004)
| Kommentar Fra : Jesper Krogh |
Dato : 28-07-04 08:03 |
|
I dk.edb.database, skrev Nicolai:
> > Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
> De stod til 256M - har ændret til 1024M og genstartet servicen.
>
> Burde det være nok? :)
Hold øje med om den giver sig til at swappe, så er det for meget.
Ellers vil jeg sige at du jo kan teste dig ud af det. Hvis den kører på
Linux, så benyttes det resterende af din ram alligevel som diskcache, så
derved er det ikke gået tabt selvom det ikke er forbrugt af mysql.
--
../Jesper Krogh, jesper@krogh.cc
Jabber ID: jesper@jabbernet.dk
| |
Nicolai (28-07-2004)
| Kommentar Fra : Nicolai |
Dato : 28-07-04 09:01 |
|
> Hold øje med om den giver sig til at swappe, så er det for meget.
Of course :)
> Ellers vil jeg sige at du jo kan teste dig ud af det. Hvis den kører på
> Linux, så benyttes det resterende af din ram alligevel som diskcache, så
> derved er det ikke gået tabt selvom det ikke er forbrugt af mysql.
2k3 :)
| |
Bent Stigsen (28-07-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 28-07-04 11:11 |
|
Nicolai wrote:
>>Det du vil skrue på, er primært værdier på key_buffer og sort_buffer.
>
> De stod til 256M - har ændret til 1024M og genstartet servicen.
>
> Burde det være nok? :)
ahem :), måske endda i overkanten, men uden at vide hvad du sider med,
er det umuligt at sige.
Som Jesper også pointerer, pas på du ikke udsulter resten af systemet.
Eller i det hele taget bare allokerer ram til intet foremål.
Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.
>>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
>>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
>>regne lidt på det.
>
> Helt optimalt ja ;)
ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
billigere end konsulenttimerne.
/Bent
| |
Nicolai (28-07-2004)
| Kommentar Fra : Nicolai |
Dato : 28-07-04 11:46 |
|
> ahem :), måske endda i overkanten, men uden at vide hvad du sider med,
> er det umuligt at sige.
> Som Jesper også pointerer, pas på du ikke udsulter resten af systemet.
> Eller i det hele taget bare allokerer ram til intet foremål.
Lige nu bruger den under 50% - det kan sql'eb ligesågodt bruge :)
> >>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> >>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> >>regne lidt på det.
> >
> > Helt optimalt ja ;)
>
> ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
> billigere end konsulenttimerne.
Netop ;)
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 13:19 |
|
> Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.
Den ændrer intet - stadig 1gb ram ledig :(
> >>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
> >>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
> >>regne lidt på det.
> >
> > Helt optimalt ja ;)
>
> ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
> billigere end konsulenttimerne.
Men den bruger det ikke - what to do?
| |
Nikolaj Hansen (04-08-2004)
| Kommentar Fra : Nikolaj Hansen |
Dato : 04-08-04 14:00 |
|
>
> Men den bruger det ikke - what to do?
Mit bedste bud, som Oracle og PostgresSQL bruger er, at din distro af
mysql er compilet med nogle default max værdier til div. cache størrelser.
Disse vil den så bruge med mindre du specifikt siger til databasen, at
den må bruge mere memory. Se evt. her:
http://gnu.kookel.org/ftp/mysql/doc/mysql/en/Server_parameters.html
Hvis du er rigtig uheldig er de 256 mbyte mem sat op til at være max og
du kan ikke tvinge databasen til at bruge mere mem. Så må du i gang med
selv at bygge mysql med de compile parametre, der passer sig til din
servers hardware.
Eller finde en anden udgave af den binære kode, hvor der er en der har
gjort det for dig.
- Nico
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 23:28 |
| | |
Nicolai (05-08-2004)
| Kommentar Fra : Nicolai |
Dato : 05-08-04 00:02 |
| | |
Nikolaj Hansen (05-08-2004)
| Kommentar Fra : Nikolaj Hansen |
Dato : 05-08-04 11:55 |
|
> Desværre sluger den kun swapfile og ikke ram - fatter minus.
Jeg forstod det var en windows server?
Gælder det kun for dbms systemet, eller er det for andre programmer, du
starter på maskinen.
Fejlen kunne vel også ligge i en opsætning til windows?
Dvs. at den søger at swappe store processer ud så meget som muligt, for
at holde så meget ledig mem som muligt?
- Nikolaj
| |
Nicolai (05-08-2004)
| Kommentar Fra : Nicolai |
Dato : 05-08-04 12:26 |
|
> Gælder det kun for dbms systemet, eller er det for andre programmer, du
> starter på maskinen.
Der kører ikke så meget andet :)
> Fejlen kunne vel også ligge i en opsætning til windows?
Næppe :)
| |
Bent Stigsen (04-08-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 04-08-04 14:09 |
|
Nicolai wrote:
>>Et gæt: Tror ikke du behøver sætte sort_buffer *så* højt.
>
> Den ændrer intet - stadig 1gb ram ledig :(
Har noget som helst du har ændret haft nogen effekt.
(læs: check at den ini-fil du piller i, også er den mysql bruger)
>>>>Helt optimalt skal du have fat i en rigtig dba'er, som vil kigge på dine
>>>>tabeller/indexes og sikkert nogle typiske forespørgsler, og derefter nok
>>>>regne lidt på det.
>>>
>>>Helt optimalt ja ;)
>>
>>ja, man kan komme langt med lidt sund fornuft. Desuden er ram'en nok
>>billigere end konsulenttimerne.
>
>
> Men den bruger det ikke - what to do?
hmm, det er godt nok ikke noget jeg har rodet forfærdelig meget med.
Hvordan ser din my.ini ud.
Hvilken motor kører du med på dine tabeller (InnoDB, MyISAM, ...)
/Bent
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 14:48 |
|
> Har noget som helst du har ændret haft nogen effekt.
> (læs: check at den ini-fil du piller i, også er den mysql bruger)
Hmm - finder kun 1 my.ini
(sorry, er mildt sagt ikke databasemand...)
> hmm, det er godt nok ikke noget jeg har rodet forfærdelig meget med.
>
> Hvordan ser din my.ini ud.
[mysqld]
basedir=C:/mysql
#bind-address=*
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=*
#set-variable=key_buffer=256M
skip-locking
skip-innodb
query_cache_limit=32M
query_cache_size=512M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=256
key_buffer=150M
join_buffer=2M
max_allowed_packet=16M
table_cache=1500
record_buffer=128M
sort_buffer_size=128M
read_buffer_size=128M
max_connect_errors=10
thread_concurrency=4
myisam_sort_buffer_size=512M
log-bin
server-id=1
log-slow-queries = c:\mysql\data\slowqueries.log
long_query_time=1
[myisamchk]
key_buffer = 1024M
sort_buffer = 1024M
read_buffer = 1024M
write_buffer = 1024M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user= *
password= *
Har netop genstartet servicen med disse parametre.
| |
Bent Stigsen (04-08-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 04-08-04 17:33 |
|
Nicolai wrote:
> [mysqld]
til en begyndelse prøv med:
key_buffer=700M
record_buffer=2M
sort_buffer_size=400M
read_buffer_size=2M
I min bruger jeg godt nok navnene sort_buffer og read_buffer, men det er
vist ligemeget.
Prøvede lige på min egen, og den lader ikke til at bruge det der står
under "[myisamchk]". Har ikke lige kunnet finde det på mysql.org. Det er
muligvis bare maxværdier hvis man kører med flere database engines.
Nogle af værdierne er per request. (fx. read_buffer) Så dem bør du ikke
sætte så højt.
/Bent
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 19:48 |
|
> til en begyndelse prøv med:
>
> key_buffer=700M
> record_buffer=2M
> sort_buffer_size=400M
> read_buffer_size=2M
retter og genstarter mysql - vender tilbage om et døgn eller 2 :)
På forhånd mange tak.
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 23:02 |
|
> > key_buffer=700M
> > record_buffer=2M
> > sort_buffer_size=400M
> > read_buffer_size=2M
>
> retter og genstarter mysql - vender tilbage om et døgn eller 2 :)
Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
1.3GB ledig ram... 1,63gb swapfile usage...
| |
Nicolai (04-08-2004)
| Kommentar Fra : Nicolai |
Dato : 04-08-04 23:02 |
|
> Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>
> 1.3GB ledig ram... 1,63gb swapfile usage...
MySql sluger med det samme ca 1,2gb swapfile ved stop og start - så noget virker (dog skidt)
| |
Bent Stigsen (05-08-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 05-08-04 00:40 |
|
Nicolai wrote:
>>>key_buffer=700M
>>>record_buffer=2M
>>>sort_buffer_size=400M
>>>read_buffer_size=2M
>>
>>retter og genstarter mysql - vender tilbage om et døgn eller 2 :)
>
>
> Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>
> 1.3GB ledig ram... 1,63gb swapfile usage...
Skummelt.
prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
tilbage, noget ala:
---
[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data
skip-innodb
skip-locking
---
Start servicen. Se hvad der sker.
Derefter tilføj key_buffer alene og skru den op.
/Bent
| |
Nicolai (05-08-2004)
| Kommentar Fra : Nicolai |
Dato : 05-08-04 16:09 |
|
> > Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
> >
> > 1.3GB ledig ram... 1,63gb swapfile usage...
>
> Skummelt.
>
> prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
> tilbage, noget ala:
> ---
> [mysqld]
> basedir=C:/mysql
> datadir=C:/mysql/data
> skip-innodb
> skip-locking
> ---
>
> Start servicen. Se hvad der sker.
> Derefter tilføj key_buffer alene og skru den op.
Done - uden keybuffer bruger den hverken ram eller awap (det kan måske komme) - med key buffer sluger den bufferens mængde
til swapfile... IKKE rammen...
Skod...
What to do?
| |
Bent Stigsen (06-08-2004)
| Kommentar Fra : Bent Stigsen |
Dato : 06-08-04 00:12 |
|
Nicolai wrote:
>>>Lige nu ser det ud til den har brugt en DEL mere swapfile - og IKKE mere ram :(
>>>
>>>1.3GB ledig ram... 1,63gb swapfile usage...
>>
>>Skummelt.
>>
>>prøv kommenter så meget som muligt ud i my.ini, så der kun er et minimum
>>tilbage, noget ala:
>>---
>>[mysqld]
>>basedir=C:/mysql
>>datadir=C:/mysql/data
>>skip-innodb
>>skip-locking
>>---
>>
>>Start servicen. Se hvad der sker.
>>Derefter tilføj key_buffer alene og skru den op.
>
>
> Done - uden keybuffer bruger den hverken ram eller awap (det kan måske komme) - med key buffer sluger den bufferens mængde
> til swapfile... IKKE rammen...
Son of a B....
Det kan være Nikolaj Hansen har fat i noget.
Check hellere om der nu skulle være nogle besynderlige options.
-->[Included with 2003 is a new tool called "Performance Options." It
consolidates processor, memory, and virtual memory settings to make it
easier to configure your server for optimum performance.]
Og mens vi har fat i windows "features", mon en genstart vil gøre
underværker, det er hørt før.
Hvilken MySQL version kører du med?
Jeg bruger ikke min til noget seriøst i øjeblikket, så jeg har ikke
noget imod at prøve en anden af.
Bare for at kunne udelukke mysql, selvom jeg ikke tror på mysql er
problemet. Jeg har selv en Mysql 4.0.18 på en XP'er, og en 3.23.58 på en
mishandlet Linux. De opfører sig begge meget pænt. Kan også øge deres
resourcer uden det hele tilt'er. Desuden burde allokering af fysisk
hukommelse og paging være transparent for applikationer, og ikke noget
de kan kontrollere på den måde med at allokere hukommelse der er page't
ud på swap fra start af.
/Bent
| |
Nicolai (06-08-2004)
| Kommentar Fra : Nicolai |
Dato : 06-08-04 00:33 |
|
> Son of a B....
Hehe enig ;)
> Det kan være Nikolaj Hansen har fat i noget.
> Check hellere om der nu skulle være nogle besynderlige options.
> -->[Included with 2003 is a new tool called "Performance Options." It
> consolidates processor, memory, and virtual memory settings to make it
> easier to configure your server for optimum performance.]
>
> Og mens vi har fat i windows "features", mon en genstart vil gøre
> underværker, det er hørt før.
Enig - performance options er også rettet - måske den ikke kan lide system cache settingen?
> Hvilken MySQL version kører du med?
4.0.20a
> Jeg bruger ikke min til noget seriøst i øjeblikket, så jeg har ikke
> noget imod at prøve en anden af.
Nice.
> Bare for at kunne udelukke mysql, selvom jeg ikke tror på mysql er
> problemet. Jeg har selv en Mysql 4.0.18 på en XP'er, og en 3.23.58 på en
> mishandlet Linux. De opfører sig begge meget pænt. Kan også øge deres
> resourcer uden det hele tilt'er. Desuden burde allokering af fysisk
> hukommelse og paging være transparent for applikationer, og ikke noget
> de kan kontrollere på den måde med at allokere hukommelse der er page't
> ud på swap fra start af.
Netop. Lige nu bruger mysql 96mb - mod 32mb da jeg genstartede servicen for en times tid siden - så vi er lidt på sporet.
my.ini ser netop nu således ud:
[mysqld]
basedir=C:/mysql
#bind-address=*
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=256M
skip-locking
skip-innodb
key_buffer=256M
record_buffer=4M
sort_buffer_size=1024M
read_buffer_size=256M
query_cache_limit=1024M
query_cache_size=256M
Skal du ikke i seng? ;)
| |
|
|