Znaczenie pamięci RAM jest faktem ustalonym, ale dostępnych jest znacznie mniej materiałów na temat znaczenia rdzeni i wielowątkowości, jeśli chodzi o użycie procesora przez MySQL. Mówię o różnicy między uruchomieniem MySQL na 4 rdzeniach a 6 rdzeniami na 8 rdzeniach i tak dalej.
Czy różne silniki pamięci masowej wykorzystują procesor inaczej?
mysql
performance
Rick James
źródło
źródło
Odpowiedzi:
Jeśli chodzi o MySQL, nie ma porównania między silnikami pamięci masowej, z wyjątkiem tego, że dzieli się on na dwie podstawowe kategorie:
MySQL wykorzystuje kilka silników pamięci masowej
Jeśli chodzi o wymienione silniki pamięci, jedynymi, które mają zgodność z ACID, są InnoDB i NDB. Dlaczego warto to wymienić? Dwa powody:
InnoDB pod MySQL 5.5, wtyczka InnoDB) i XtraDB serwera Percona Server mają opcje, które można ustawić w celu uzyskania dostępu do wielu rdzeni (serwer Percona robi to już dłużej). W rzeczywistości Percona wstrzykuje około 30 000 wierszy kodu specjalnie w celu zwiększenia wydajności InnoDB z każdą nową wersją GA kodu źródłowego MySQL. Możemy być pewni, że Oracle dołączyło własne ulepszenia z własnego think tanku do działania w InnoDB dla operacji wielordzeniowych (od MySQL 5.1.38).
Dzięki konieczności wykonywania MVCC na danych w połączeniu z blokowaniem wierszy / stron, wydajność transakcji można teraz oprzyrządować, zmierzyć i skonfigurować.
Jeśli nauczyłem się jednej rzeczy na temat używania wielu rdzeni, musisz skutecznie dostroić InnoDB, a nie polegać tylko na InnoDB po wyjęciu z pudełka .
AKTUALIZACJA 2011-09-20 08:03 EDT
W odniesieniu do InnoDB korzystającego ze wszystkich rdzeni musimy zachować percepcję. Rdzenie muszą mieć również inne cechy (system operacyjny, dysk, pamięć, aplikacje, monitorowanie itp.) W serwerze bazy danych. Dla osób o skromnych budżetach wielu z nich ma również serwer bazy danych zapewniający NFS, monitorowanie z Munin, obsługę aplikacji dla JBoss, PHP i lista jest długa. Jeśli chcesz, aby MySQL, a dokładniej InnoDB, używał większej liczby rdzeni, Serwer bazy danych musi być dedykowany wyłącznie MySQL, a OS / Dysk / Pamięć musi mieć tendencję tylko do MySQL . Biorąc pod uwagę tę perspektywę, InnoDB bez wątpliwości zaangażuje więcej rdzeni .
Jeśli chodzi o wtyczkę InnoDB, wspomniano po prostu o pokazaniu wcześniejszych inicjatyw mających na celu lepszą InnoDB ze strony MySQL (eh, Oracle. Przepraszam, wciąż nie zjeżdża z języka). Nowe zmienne przywołujące większą aktywność podstawową stały się oczywiste z MySQL 5.1.38.
Na przykład innodb_read_io_threads i innodb_write_io_threads (oba od MySQL 5.1.38) przydzielają określoną liczbę wątków do odczytu i zapisu. Domyślna wartość to 4, a maksymalna to 64. Tak różne wartości domyślne i maksymalne (4–64) pokazują, że InnoDB jest taktowany wielowątkowo i intensywnie korzysta z rdzenia podczas jego konfiguracji !!!
Zaspokojenie potrzeb społeczności MySQL dostępu do większej liczby rdzeni za pomocą InnoDB było prowadzone przez Perconę. W związku z tym MySQL zaczął podążać za nimi. Muszę przyznać, że Oracle (fuj) dokonał niezbędnych ulepszeń, aby uzyskać więcej podstawowej działalności.
źródło
Uważam, że mówienie o silnikach pamięci masowej wykorzystujących rdzenie może wprowadzać w błąd dla początkujących. Pod warunkiem, że program jest wystarczająco wielowątkowy, system operacyjny zaplanuje go na jak największej liczbie rdzeni.
Specyficznym problemem ograniczającym skalowanie procesora jest sytuacja, w której wewnętrzny kod blokujący ( muteksy ) ma rywalizację i blokuje jednoczesne uruchamianie wątków. Wszystkie silniki pamięci masowej będą wymagać muteksów, ale z pewnością w MyISAM są pewne gorące.
Jeśli przez sekundę zignorujemy rywalizację mutexów i wrócimy do głównego pytania: jak ważne jest posiadanie wielu rdzeni? -
Lubię mieć wiele rdzeni do obciążeń, które obsługują żądania użytkowników. Posiadanie wielu może zmniejszyć wariancję między czasami zapytania. Pomyśl o tym jak o ustawieniu się w supermarkecie z otwartymi 12 przejściami i tylko 2.
Aktualizacja : Napisałem post na blogu, dlaczego ważna jest skalowalność w pionie (wiele rdzeni).
źródło