2016-01-07 32 views
6

Właśnie pobrałem najnowszą wersję MySQL Workbench (6.3.6) i próbowałem wyeksportować zdalną tabelę (w Google CloudSQL) do csv przy użyciu nowego kreatora "eksport danych tabel". Tabela miała około 600 000 wierszy, a ostateczny pobrany rozmiar wynosił około 75 MB. Trwało to 7,5 godziny.Eksport danych stołu roboczego MySQL bardzo powolny

Rozumiem, że mogę użyć Google Developer Console do wykonania tego eksportu (co zrobiłem i zajęło mi to około 15 sekund), ale wydaje się, że coś jest nie tak z MySQL Workbench. Czy może być problem z konfiguracją, który powoduje, że tak wolno?

+1

Ciekawy, czy wyeksportowałeś plik do komputera lokalnego czy zdalnego? Czy zmiana tego skutkuje? –

+0

Czy możesz uruchomić traceroute (mtr is awesome) między sobą a adresem IP instancji, aby zdiagnozować opóźnienie sieci? – Nick

+0

https://stackoverflow.com/questions/33296569/mysql-workbench-table-data-import-wizard-extermely-slow Odpowiedź tego linku –

Odpowiedz

0

Opis: Workbench bardzo wolno eksportuje duże zestawy danych za pomocą kreatora eksportu CSV. Nieproporcjonalnie powolny komplement do mniejszego zestawu. Jednak jest to coś, z czym miałem wcześniej do czynienia w .NET.

Jak powtórzyć: dostać stolik z 15k lub więcej rejestrów lub więcej, a eksport przez kreatora. Zwróć uwagę, jak długo trwa eksport, a następnie wyeksportuj podzbiór danych i zobacz, jak czas nie koreluje liniowo z ilością wierszy.

Proponowana poprawka: Coś zauważyłem podczas tworzenia aplikacji na eksport CSV jest, że ramy MS .NET nie może uporać się z ogromnymi strun bardzo dobrze, i ma tendencję do wykonywania źle jak wynik.

Znalazłem jednak rozwiązanie. Kiedy budujesz ogromny ciąg do zrzutu w pliku, kiedy już go tworzysz, zamiast budować 1 ogromny ciąg i zapisywać go do pliku naraz, gdy eksport jest gotowy, osiągam znacznie lepsze wyniki, robiąc tylko kilka setki wierszy CSV generowanych na raz, zapisz go w pliku i przepłucz bufor, do którego zapisujesz wygenerowane dane.

Zaleca się zapisywanie do pliku tymczasowego, a następnie zmianę nazwy/przeniesienie do określonego użytkownika, po zakończeniu. Zapis do temp, a następnie przenoszenie/zmiana nazwy to sposób, w jaki Photoshop i niektóre inne aplikacje zapisują swoje dane. A pisanie x wierszy i flushowanie, które znalazłem podczas rozwijania się, jest znacznie szybsze niż próba uzyskania .NET do zarządzania łańcuchem o długości 20 MB.