MySQL:n nopeuden optimoimisesta

Haluaisin tietoja MySQL:n nopeuden optimoimisesta ja tekniikasta.

Joskus www-sivulle tulee ilmoitus "Too many connections". Ilmeisesti ainakin osasyynä tuohon on, että palvelimen päässä ei sallita tarpeeksi yhtäaikaisia yhteyksiä, mutta onko tuohon mitään, mihin ohjelmoija voi itse vaikuttaa (kun ei ole root-oikeuksia)?

Vaikuttaako tuohon esimerkiksi se, että kuinka monta hakua yhdellä www-sivulla suoritetaan? Palvelin on Apache Linux -alustalla ja mysql yhteydessä käytetään pconnect()-funktiota Php-kielellä.

Kuinka paljon eri haut yleensä vaikuttavat palvelimen nopeuteen? Onko siinä suurta vaikutusta, jos eri hakuja on esimerkiksi 5 tai 10 kappaletta? Entä 20?

Onko suurta merkitystä, että hakeeko tiedot kahdesta taulusta kahdella eri haulla vai olisiko se nopeampaa hakea yhdellä haulla kahdesta taulusta?

Entä onko mahdollista hakea esimerkiksi kahden taulun kaikki tiedot yhdellä haulla ilman että tauluilla olisi yhteistä avainkenttää?

Entä onko tiedon määrällä suurta merkitystä eli jos taulussa on satoja rivejä, niin kannattaisiko ehdottomasti pyrkiä siihen, että rajataan hakukysely WHERE:n avulla?

Tarkoituksenani on siis tehdä isoja web-palveluja, jotka kuitenkin toimisivat luotettavasti ja nopeasti, mutta toisaalta tiedon määrä on valtava ja tietoa joutuu sijoittamaan useisiin eri tauluihin, johtuen mm. siitä syystä, että tietokannat on rakennettu erittäin skaalautuviksi (esimerkiksi käyttäjien tiedot ovat yhdessä taulussa ja asetukset toisessa).

Tuleeko mieleen muita vinkkejä?
1212
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

> Palvelin on Apache Linux -alustalla ja mysql
> yhteydessä käytetään pconnect()-funktiota
> Php-kielellä.

Kannattaa ehkä harkita siirtymistä mysql_connectiin:

mysql_pconnect() acts very much like mysql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

Äänestä

Kommentoi aloitusta


Speedwheel kirjoitti:

Haluaisin tietoja MySQL:n nopeuden optimoimisesta ja tekniikasta.

Joskus www-sivulle tulee ilmoitus "Too many connections". Ilmeisesti ainakin osasyynä tuohon on, että palvelimen päässä ei sallita tarpeeksi yhtäaikaisia yhteyksiä, mutta onko tuohon mitään, mihin ohjelmoija voi itse vaikuttaa (kun ei ole root-oikeuksia)?

Vaikuttaako tuohon esimerkiksi se, että kuinka monta hakua yhdellä www-sivulla suoritetaan? Palvelin on Apache Linux -alustalla ja mysql yhteydessä käytetään pconnect()-funktiota Php-kielellä.

Kuinka paljon eri haut yleensä vaikuttavat palvelimen nopeuteen? Onko siinä suurta vaikutusta, jos eri hakuja on esimerkiksi 5 tai 10 kappaletta? Entä 20?

Onko suurta merkitystä, että hakeeko tiedot kahdesta taulusta kahdella eri haulla vai olisiko se nopeampaa hakea yhdellä haulla kahdesta taulusta?

Entä onko mahdollista hakea esimerkiksi kahden taulun kaikki tiedot yhdellä haulla ilman että tauluilla olisi yhteistä avainkenttää?

Entä onko tiedon määrällä suurta merkitystä eli jos taulussa on satoja rivejä, niin kannattaisiko ehdottomasti pyrkiä siihen, että rajataan hakukysely WHERE:n avulla?

Tarkoituksenani on siis tehdä isoja web-palveluja, jotka kuitenkin toimisivat luotettavasti ja nopeasti, mutta toisaalta tiedon määrä on valtava ja tietoa joutuu sijoittamaan useisiin eri tauluihin, johtuen mm. siitä syystä, että tietokannat on rakennettu erittäin skaalautuviksi (esimerkiksi käyttäjien tiedot ovat yhdessä taulussa ja asetukset toisessa).

Tuleeko mieleen muita vinkkejä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu