Portaal Portaal Pingviini veeb foorumi pealeht
  Viki  |  IRC  |  Otsing  |  Küsimused ja vastused  |  Profiil  |  Privaatsõnumite vaatamiseks logi sisse  | Logi sisse või Registreeru
<empty>
Vaata järgmist teemat
Vaata eelmist teemat

Postita uus teemaVasta teemale
Autor Sõnum
obundra
Vana Pingviin
Vana Pingviin


Vanus: 49
Liitunud: 04.08.2005
Postitused: 1213
Asukoht: 127.0.0.1
Distributsioon: RHEL, Solaris, Debian, Gentoo
estonia.gif
postituspostitatud: 05.09.2013, 16:17  postituse pealkiri:  (teema puudub)  

Päringu optimeerimiseks leidsin sellise asja http://codereview.stackexchange.com/questions/12324/can-this-php-function-be-written-to-perform-better
Vaheta päringus userid ja seeder omavahel ära ja vaata mis siis teeb.
Kas seal jookseb gttracker või miskit sarnast?

_________________
IT teenused

chris
Pingviini aktivist
Pingviini aktivist



Liitunud: 16.02.2009
Postitused: 146
Asukoht: Tallinn
Distributsioon: Debian 6.0/7.0
estonia.gif
postituspostitatud: 05.09.2013, 21:21  postituse pealkiri:  (teema puudub)  

Kraapisin oma teadmised SQL-st kokku ja hakkasin mõtlema, kuidas päringut kiirendada.
Ühe variandina suutsin kirja panna selle:
Kood:
SELECT DISTINCT userid AS peer, COUNT(torrent) AS count
    FROM peers
    WHERE seeder = "yes"
    GROUP BY peer;

Ma ei pane pead pakule, et see võiks olla kiirem või õigem.
Täiesti võimalik, et tegemist on totaalse jamaga. Lubada julgen ainult seda, et baasist ridu see kustutama ei hakka.


-IFFI-
Vana Pingviin
Vana Pingviin


Vanus: 47
Liitunud: 25.06.2005
Postitused: 1411
Asukoht: Lappeenranta-Turku
Distributsioon: Linux MX
finland.gif
postituspostitatud: 07.09.2013, 06:30  postituse pealkiri:  (teema puudub)  

Nii, asi tunudb pea aegu olevat nuid OK. Lülitasin webminis valiku Separate file for each InnoDB table? YES (ennem oli NO) ning peale seda nuid 2 päevajooksul on seda kohati ettetulevat serveri kokkujooksmist või lagi jäänud tõsiselt harvemaks. Vast tunnis korra tuleb ette.

Sain ka vihjeid teatud scriptile/koodi jupile mis võib seda põhjustada. Proovin nüüd selle veel ülevaadata ja kas see siis lahendab täielikult probleemi.

Igaljuhul tänan ma hetkel kõiki kes jagasid oma teadmisi minuga.

Keegi tore tegelane võiks muidugi mulle lambale ära seletada mida see Separate file for each InnoDB table? valik teeb/muudab databasis. Omal pole õrna aimugi sellest. Smile


chris
Pingviini aktivist
Pingviini aktivist



Liitunud: 16.02.2009
Postitused: 146
Asukoht: Tallinn
Distributsioon: Debian 6.0/7.0
estonia.gif
postituspostitatud: 07.09.2013, 09:32  postituse pealkiri:  (teema puudub)  

Tahaks vastata, kuid pean nentima, et olen samuti loll.

Aga, noh, olemas on ametlik dokumentatsioon http://dev.mysql.com/doc/refman/5.6/en/innodb-multiple-tablespaces.html
StackExchange's on asja seletatud http://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file
Ühe DB admini (peaaegu) temaatiline blogipostitus http://www.datavail.com/blog/uncategorized/innodb-conversion-to-file-per-table/
Ja midagi on ka StackOverflows http://stackoverflow.com/questions/3820995/mysql-innodb-optimization


-IFFI-
Vana Pingviin
Vana Pingviin


Vanus: 47
Liitunud: 25.06.2005
Postitused: 1411
Asukoht: Lappeenranta-Turku
Distributsioon: Linux MX
finland.gif
postituspostitatud: 07.09.2013, 11:11  postituse pealkiri:  (teema puudub)  

Täänks ja ilus kena kõik lingid aga see english ei ole just kõige tugevam pool ning google translatoriga lääb asi suht segaseks.

Oleks soovinud lühidat maakeelset kokkuvõtliku ülevaadet Smile


chris
Pingviini aktivist
Pingviini aktivist



Liitunud: 16.02.2009
Postitused: 146
Asukoht: Tallinn
Distributsioon: Debian 6.0/7.0
estonia.gif
postituspostitatud: 07.09.2013, 17:06  postituse pealkiri:  (teema puudub)  

Mulle tundus kuidagi võimatu, et inglise keel on tundmatu. Proovin siis teha väikese kokkuvõtte võttes aluseks ülaltoodud lehed.

MySQL 5.x oskab kasutada üsna mitut nn. salvestusmootorit. Salvestusmootor on teek, mis tegeleb andmete paigutamisega andmekandjale ja nende välja lugemisega. Teadlikult või teadmatult kasutad sa ennekõige järgmiseid mootoreid:
* MyISAM, mis oli vaikimisi mootor kuni v5.5-ni, kui kompileerimisel või konfifailis ei ole teisiti öeldud. Plussideks on väiksem kettakasutus, miinuseks kesine kiirus kirutamisel ja lugemisel korraga ning transaktsioonide toe puudumine.
* InnoDB on uus vaikimis mootor. Toetab transaktsioone, täpsemat lukustamist, kuid samas tahab rohkem resursse. Mõned statistilised parameetrid võivad InnoDB-ga olla väga mööda. Nt. ridade arv võis tegelikust erineda 40-50% (täpse tulemuse annab "select count (field) from table;").
* Memory, mida kasutatakse mälus olevate tabelite hoidmiseks.
Mootoreid on veel; huvitatud isik klikib lingil http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html

Ennist jäi teadlikult mainimata veel üks InnoDB ja MyISAM'i erinevus: InnoDB mootor hoiab kõik andmebaasi tabelid kettal ühes failis nagu nt. SQLite või M$ Access; MyISAM loob aga iga tabeli jaoks kolm faili (tabeli kirjeldus - *.frm, salvestatud andmed - *.MYD ja indeksid - *.MYI).

InnoDB salvestab laias laastus nelja tüüpi andmeid:
* tabelite (andmete) kirjeldused
* tabelites salvestatud andmed
* tabelite juurde kuuluvad indeksid
* mitmeversioonilise paralleelse halduse andmed, mis on muuhulgas
- transaktsioonide rollback segmendid
- tagasivõtmise puhvrid
- topelt kirjutamise puhvrid
- lisamispuhver
Kui jätta kõrvale tabelite kirjeldused, mis istuvad ikka veel eraldi .frm failis, siis kõik ülejäänud asjad istub kõikide andmebaaside jaoks, mis on valinud salvestusmeetodiks InnoDB, ühes failis - ibdata1.

Tagasi probleemi juurde. Miks jääb üks fail aeglaseks? Sest vahel on failisüsteem. Ibdata1 üritab asendada otsepöördusega salvestusmeediat. Kui andmeid on palju, siis paisub fail suureks ja kipub fragmenteeruma. Seega on parim vastus küsimusele "kuidas andmebaas kiireks saada?" pane andmed eraldi kettale, mida kasutab ainult andmebaasi mootor otse, ilma failisüsteemita.
Alati ei ole aga eraldi ketta (pigem RAID-5/6/1+0 kettamassiivi) eraldamine võimalik. Sellisel juhul tasub proovida eri tüüpi andmete eraldamist - panna kõik tabelid eraldi failidesse (laiend .ibd) nagu seda teeb MyISAM. Metaandmed jäävad faili ibdata1 edasi; neid liigutada ei saa. Võimalik on aga liigutada üksikuid tabeleid erinevatele andmekandjatele.


sander85
Vana Pingviin
Vana Pingviin


Vanus: 38
Liitunud: 08.08.2005
Postitused: 4359
Asukoht: Tallinn (vahel ka Virtsu)
Distributsioon: Mageia, Debian, CentOS
estonia.gif
postituspostitatud: 08.09.2013, 00:34  postituse pealkiri:  (teema puudub)  

-IFFI- kirjutas:
Nii, asi tunudb pea aegu olevat nuid OK. Lülitasin webminis valiku Separate file for each InnoDB table? YES (ennem oli NO) ning peale seda nuid 2 päevajooksul on seda kohati ettetulevat serveri kokkujooksmist või lagi jäänud tõsiselt harvemaks. Vast tunnis korra tuleb ette.

Väga raske on uskuda, et antud muudatus midagi väga muuta sai. Põhjus lihtne, mysqltuneri väljundis oli järgmine rida:
Kood:
[OK] InnoDB data size / buffer pool: 768.0K/128.0M


Sellest võib üsna üheselt järeldada, et InnoDB-d sa väga suures mahus just ei kasuta ja enamus baase/tabeleid jookseb MyISAMi peal endiselt. Seega on kiirenemine silmapete või muutsid sa ka midagi muud samaaegselt.

_________________
Image Image Image

Näita (aja järgi):      
Postita uus teemaVasta teemale


Vaata järgmist teemat
Vaata eelmist teemat
Powered by phpBB2 Plus based on phpBB © 2001/7 phpBB Group