WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MyISAM vs InnoDB (https://www.wn.se/forum/showthread.php?t=4768)

David 2004-12-02 20:03

Jag har länge funderat på att byta från MyISAM-tabller till InnoDB-tabeller, till exempel för att lite referentiell integritet och triggers vore underbart. Men nu också för att row-låsning är lite skönare än tabell-låsning (se min replikeringstråd). Det som hindrat mig är att det är en oerhörd massa arbete som man måste lägga ner, t.ex. för att commit:a alla transaktioner. Jag vet inte heller hur väl InnoDB-tabellerna står sig under tryck.

Är det någon som har erfarenhet av innoDB-tabeller i produktionsmiljö och kan besvara mina betänkligheter?

/David

Clarence 2004-12-02 21:24

Har kört InnoDB för en rätt så krävande aplikation med rätt så många rader, vilkt fungerade fint. MyISAM för samma applikation gjorde att tabellen låstes på tok för länge för att det skulle vara gångbart under peaks.

Exempelvis slashdot kör även InnoDB på de flesta av sina tabeller, enligt egen utsago. Så står sig under rejält tryck gör det.

Förhållandevis mycket inserts/updates och många rader så är InnoDB ett självklart val enligt mig.

zoran 2004-12-02 21:49

Citat:

Originally posted by David@Dec 2 2004, 21:03
Jag har länge funderat på att byta från MyISAM-tabller till InnoDB-tabeller, till exempel för att lite referentiell integritet och triggers vore underbart. Men nu också för att row-låsning är lite skönare än tabell-låsning (se min replikeringstråd). Det som hindrat mig är att det är en oerhörd massa arbete som man måste lägga ner, t.ex. för att commit:a alla transaktioner. Jag vet inte heller hur väl InnoDB-tabellerna står sig under tryck.

Är det någon som har erfarenhet av innoDB-tabeller i produktionsmiljö och kan besvara mina betänkligheter?

/David

Du måste väl inte jobba med transaktioner. Jag har använt InnoDB-tabeller just integritetskontroll men aldrig just transaktioner.

By the way, stödjer MySQL triggers med InnoDB menar du?

/Zoran

David 2004-12-03 03:21

Det låter ju som det inte ska vara något problem med InnoDB under tryck då.

Citat:

Originally posted by zoran@Dec 2 2004, 22:49
Du måste väl inte jobba med transaktioner. Jag har använt InnoDB-tabeller just integritetskontroll men aldrig just transaktioner.

By the way, stödjer MySQL triggers med InnoDB menar du?

Som jag har förstått det så är InnoDB-motorn transaktionsorienterad (dvs man gör commit) men jag antar att man kan ställa in autocommit eller nåt sånt så det borde väl vara ganska lätt att komma undan. Jag vet att InnoDB har stöd för referentiell integritet men jag kanske inte minns rätt angående triggrarna. Men det är den referentiella integriteten jag vill åt först.

eg0master 2004-12-03 11:53

Är inte (och har inte orkat kolla det) insatt i MySQL, men alla andra databaser jag jobbat med är det ju så att om du inte explicit skapar en transaktion så blir ju varje statement automatiskt en transaktion. verkar ologiskt att det skulle vara annorlunda här.

Anders 2004-12-04 15:56

Citat:

Originally posted by Clarence@Dec 2 2004, 22:24
Exempelvis slashdot kör även InnoDB på de flesta av sina tabeller, enligt egen utsago. Så står sig under rejält tryck gör det.
Vet inte hur det är egentligen. Om man laddar ner källkoden för /. så använder de MyISAM för alla tabeller.
Detta hjälper kanske inte dig David? ;)

zoran 2004-12-04 20:49

Citat:

Originally posted by eg0master@Dec 3 2004, 12:53
Är inte (och har inte orkat kolla det) insatt i MySQL, men alla andra databaser jag jobbat med är det ju så att om du inte explicit skapar en transaktion så blir ju varje statement automatiskt en transaktion. verkar ologiskt att det skulle vara annorlunda här.
Jag vet inte hur det fungerar här internt älirgt talat, det är bara så att jag vet att man inte behöver commita sina transaktioner explicit. Det är kanske beroende på inställningar. Default är det så att du inte behöver. Sybase däremot vet jag kräver commit.

/Zoran

grazzy 2004-12-04 20:54

http://dev.mysql.com/doc/mysql/en/InnoDB_a...AUTOCOMMIT.html

På de tabeller där jag har provat InnoDB verkar det som att autocommit på som default, jag är dock inte säker.

David 2004-12-06 20:23

Jag hörde och läste många bra saker om InnoDB så jag konverterade min databas natten till igår, runt hundra tabeller. Jag passade också på att lägga till lite fler index för att hjälpa InnoDB att göra SELECT COUNT(*) vilket är ett jäkla härk har jag förstått (och nu erfarit).

Men det går långsamt, olidligt långsamt. Maskinen går varm
Citat:

8:16pm up 154 days, 7:25, 2 users, load average: 5.25, 5.89, 6.51
och sajten går segt som sirap med samma viskositet som den tidigare MyISAM-sirapen.

Jag är besviken, man hade ju hoppats på att det hade blivit bättre.

En fråga till er som använder InnoDB, är ni alltid noga med att separera ut BLOB:ar till egna tabeller (som man inte söker i helt enkelt) - är det hemligheten?

Clarence 2004-12-07 07:19

dev.mysql.com/doc/mysql/en/InnoDB_tuning.html innehåller en hel del saker som kan vara bra att tänka över ordentligt, ordningen på tipsen är även en väldigt bra väg att gå. Speciellt ändringar av innodb_buffer_pool_size brukar kunna ha avgörande betydelse.

Att separera BLOBs som det sällan skrivs till men ofta söks på till en separat tabell med MyISAM skulle absolut kunna vara något prestandaökande också, förutsatt att mängden data är tillräckligt liten för att hanteras bra av tabelltypen (vilket den förmodligen är?).

Citat:

Vet inte hur det är egentligen. Om man laddar ner källkoden för /. så använder de MyISAM för alla tabeller.
Tabelltypen i källkoden behöver inte stämma överens med vad som används. Mysql.com och innodb:s sida nämner ./ som exempel. Även på slashdot själv har det minst 1 gång skrivits av personalen om deras användande av innodb.


Alla tider är GMT +2. Klockan är nu 13:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson