Kom ihåg mig?
Home Menu

Menu


MyISAM vs InnoDB

 
Ämnesverktyg Visningsalternativ
Oläst 2004-12-02, 20:03 #1
Davids avatar
David David är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2003
Inlägg: 477
David David är inte uppkopplad
Flitig postare
Davids avatar
 
Reg.datum: Aug 2003
Inlägg: 477
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
David är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-02, 21:24 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-02, 21:49 #3
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
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
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-03, 03:21 #4
Davids avatar
David David är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2003
Inlägg: 477
David David är inte uppkopplad
Flitig postare
Davids avatar
 
Reg.datum: Aug 2003
Inlägg: 477
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.
David är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-03, 11:53 #5
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Ä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.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-04, 15:56 #6
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
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?
Anders är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-04, 20:49 #7
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
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
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-04, 20:54 #8
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
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.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-06, 20:23 #9
Davids avatar
David David är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2003
Inlägg: 477
David David är inte uppkopplad
Flitig postare
Davids avatar
 
Reg.datum: Aug 2003
Inlägg: 477
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?
David är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-07, 07:19 #10
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 14:09.

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