MySQL & VMWare - Multicore med MyISAM ? (Alt. konvertera till InnoDB)

Permalänk
Livsnjutare 😎

MySQL & VMWare - Multicore med MyISAM ? (Alt. konvertera till InnoDB)

Jag har idag en databas i MySQL på vårt företag som är c:a 3gb stor, med alla tabeller inräknade.
SQL'en körs på en Windows 2003 32bit maskin med 4gb ram.

Sedan c:a 1år tillbaka är maskinen i virtuell drift, varpå vi kunde lyfta den från 2 cpu'er till 4 cpu'er (4x 2,4ghz) och har tilldelat den 4gb ram.
Maskinen i sig fick ett väldigt bra lyft rent prestandamässigt bara med tanke på den nya hårdvaran den rullar på, men flaskhalsen är databasen.

Om jag ställer en större fråga till databasen så slår en CPU-core i taket, MySQL tjänsten drar ~120mb minne (efter optimering. dock lite?).
Har provat att optimera alla tabeller, optimerat minnesanvändingen (skall vara 20% av tillgänligt ram om man kör med MyISAM).
Flaskhalsen verkar dock vara CPU'n och multicore, då MySQL'en aldrig kommer använda mer än en core till MyISAM frågorna...

Det bästa hade varit att ha EN stor CPU med mer kraft, istället för flera små.
Ex. 1x 4.5ghz istället för 4x 2,4ghz.

Då vi kör en kluster med 3 likadana hosts i VMWare är maskinerna likadana;
2st Xenon 5645 Hexa Core 2,4ghz
48gb ram
SAN med Raid-10 via iSCSI på 10gbit lina.

Alla hostarna är likadana, och har samma multicores cpu'er med lägre klocka.
Problemet är att MySQL inte kan nyttja multicores utan hade hellre föredragit en stor CPU.

Vad jag förstått från div forum på nätet så klarar dock InnoDB uppsättning multicores processer...

Så frågorna är;

1. Kan man i VMWare ställa om så att flera cores upplevs i den virtuella maskinen som en stor / större CPU?
Detta för att "lura" MySQL att nyttja fler cores, fast den själv bara ser en...

2. Kan kan konvertera om en MyISAM databas till InnoDB utan krångel (typ FAT32->NTFS) eller kan det bli problem med driften?

Visa signatur

Citera eller Svara för respons! •
• Life is a playground {|;^) •

Permalänk
Medlem

Ingen erfarenhet alls av MySQL men MS SQL är inte optimal att köra virtuellt om du vill ha maximal I/O , samma sak om du sätter 4 cores på den virtuella servern tror inte det gör så mycket skillnad.

Du borde kunna ställa in dock hur mycket den kan utnyttja? typ minnesanvändning och tilldelad cpu osv eller?

Visa signatur

13900KS | 32GB 6400 DDR5 | 4090 FE | Acer 34" Predator IPS 21:9 Curved 180 Hz |
ASUS ROG Strix Z790-F Gaming | Fractal Torrent White | Corsair HX1200

Permalänk
Medlem

MySQL i sig har inga större problem med multicores. Däremot har jag förstått att varje fråga kör i sin egna tråd och inte fanar ut en fråga till flera CPUer. Det kanske är så att det är dina frågor som är problemet. Med MyISAM så låses ju hela tabellen när den arbetas med i motsats till exempelbis InnoDB där man bara låser de rader som arbetas med. Det kan ju ge intrycket att bara en CPU kan användas om en massa connections hamnar i kö när en lång query körts och andra föffråginngar vill vara med och leka i den tabellen också.

Att byta till InnoDB KAN vara s åenkelt som att köra en "alter table tablename engine='innodb'" men det finns bättre och snabbare sätt (inserta datan sortertad i primary id). Sen kan det vara bra att se hur auto increment skjiljer sig för det kan bita dig i foten REJÄLT om du inte har tungan rätt i min och har foreign key restraints.

Är du riktigt våghalsig så kan du kolla på TokuDB som nyss släppte sin databasmotor open source för MySQL. Jag ska göra en testkonvertation av några tabeller jag har över en miljard rader i och se hur den ter sig. Men jag har inte haft tid för det ännu.