2009-06-16 11 views
15

Chcę załadować bazę danych MYSQL do pamięci RAM mojego komputera, czy jest jakiś sposób to zrobić? Używam tej bazy danych pod Linuksem. Ponadto, jeśli jest to możliwe, istnieje dobry sposób tworzenia kopii zapasowych, ponieważ jeśli komputer zostanie nieoczekiwanie zamknięty, straciłbym wszystkie moje dane.Czy można załadować bazę danych w pamięci RAM?

+0

Jak to zrobić w systemie Windows? –

Odpowiedz

5

absolutnie, na przykład pod Linuksem można zamontować bazę danych w tmpfs

+0

To może być realne rozwiązanie, jeśli jesteś w stanie robić regularne migawki do tworzenia kopii zapasowych bazy danych. W innym przypadku w przypadku awarii DB jest tracony jak przy ponownym uruchomieniu, wszystko w tmpfs zostanie zgubione – jitter

+1

Działa to doskonale do uruchamiania testów! :) – mkrmr

10

Tak, można użyć MEMORY engine. Jeśli chodzi o kopie zapasowe, to twoja rozmowa. Nigdy nie powiedziałeś, np. jak często chcesz przechowywać na dysku. Ale możesz użyć tradycyjnego MySQL replication lub własnego rozwiązania.

+0

Ale po wyłączeniu Mysqlserver wszystkie wiersze przechowywane w tabelach MEMORY są tracone – jitter

+1

Tak, jitter, to prawda. To jest wezwanie morke'a, jak sobie z tym poradzić. –

4

Jeśli używasz tabel InnoDB to polecam dostosowanie rozmiaru puli buforów jak S.Lott zasugerowano powyżej. Zrób co najmniej 110% rozmiaru bazy danych, jeśli masz pamięć RAM.

Jeśli twoja baza danych ma> 50 MB, będziesz również chciał spojrzeć na zwiększenie rozmiaru pliku innodb_log_file. Zobacz http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_log_file_size Być może około 25-50% wielkości puli buforów, ale 1 gb maks.

Rozmiar innodb_log_file_ jest trudny do dostosowania. Musisz zamknąć bazę danych, przenieść bieżące pliki dziennika do lokalizacji kopii zapasowej i pozwolić programowi mySQL je odtworzyć po ponownym uruchomieniu (tj. Po zmianie wartości w pliku my.cnf). Google to, a znajdziesz odpowiedzi.

Powiązane problemy