Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql Kopiowanie tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
lysy2005
Witam szanowne grono,

próbuje skopiować dane (wraz ze strukturą) z jednej tabeli do drugiej używam do tego:
  1. CREATE TABLE nowa_tabela SELECT * FROM stara_tabela

Wszystko jest niby OK, ale... Czas wykonywania przy dużych tabelach (ok.10mln rekordów) nie spada mi poniżej 30 sekund, a 30 sekund to bardzo dużo dla mojej aplikacji.

Macie jakieś pomysły?

Aplikacja działa tak:
1) Zapisuje dane do stara_tabela (zapisywać danych do nowa_tabela nie mogę bezpośrednio)
2) Kasuje nowa_tabela
3) Wykonuje polecenie sql podane wyżej
i tak co godzinę dla kilkunastu tabel po kilka milionów rekordów.

Może to powinienem inaczej zrobić, dało by się żeby nie trzeba było usuwać istniejącej nowa_tabela tylko za każdym razem jakoś nadpisywać?

qrcze_pieczone
Kolego jak masz 10mln rekordów to czego ty się spodziewasz że ci to machnie w 2 sekundy winksmiley.jpg,
A to jest robione na jakimś dedykowanym profesjonalnym serwerze (może jest już za słaby aby przemielić taką ilość danych), czy może na jakimś wirtualu np na home.pl?
lysy2005
Cytat(qrcze_pieczone @ 27.10.2010, 23:04:42 ) *
Kolego jak masz 10mln rekordów to czego ty się spodziewasz że ci to machnie w 2 sekundy winksmiley.jpg,
A to jest robione na jakimś dedykowanym profesjonalnym serwerze (może jest już za słaby aby przemielić taką ilość danych), czy może na jakimś wirtualu np na home.pl?

Mam całego dedyka pod tą aplikacje, próbuję właśnie różnych metod czasowo bardzo długo idzie... Jakieś pomysły?
qrcze_pieczone

Może zamiast usuwać tabelę usuń tylko wszystkie dane z tabeli czyli
  1. TRUNCATE TABLE orderline

i nowe dane dodawaj przez INSERT
może coś to da
a jeśli chodzi o same zapytanie to jeśli dodajesz dane przez
  1. SELECT * FROM stara_tabela

to tu nie ma już co za bardzo optymalizować winksmiley.jpg
lysy2005
Cytat(qrcze_pieczone @ 27.10.2010, 23:25:31 ) *
Może zamiast usuwać tabelę usuń tylko wszystkie dane z tabeli


Dużo niestety nie dało, bo w sumie usunięcie tabeli i ponowne jej stworzenie to 0,05 sek a reszta tak naprawdę to to samo.

Ale dzięki, będę myślał coś dalej.
Rok temu zdecydowałem sie na Mysqla i napisałem w nim całą aplikacje, po roku okazuje sie że nie daje rady. A przepisanie całości skryptu pod inną bazę to kilka miesięcy pracy ;/
Jakby ktoś miał jeszcze jakiś pomysł, z góry dzięki.
qrcze_pieczone
Znaczenie może mieć też jakiego typu jest tabela jeśli np. InnoDB i masz zdefiniowane klucze obce do innych tabel to może zamulać
Wtedy wyłączenie kontroli wiązań może przyspieszyć działanie skryptu
może jest zła konstrukcja poszczególnych pól w tabeli czyli zamiast wpisywać
20 000 Poznań można podać wartość liczbową (jako klucz obcy) i pełną nazwę przechowywać w innej tabeli(chociaż nie przypuszczam, że takie coś mogłeś zrobić winksmiley.jpg )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.