Długi INSERT mysql 5.5 |
Długi INSERT mysql 5.5 |
21.01.2015, 03:01:38
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) |
Witam, mam pewną zagwozdkę otóż, mam pewien skrypt, który na mysql 5.1(debian squeeze) działa perfekcyjnie a na mysql 5.5(debian wheezy) już nie tak dobrze, a mianowicie zaimplementowanie ok. 6k rekordów zajmuje mu z 3 minuty albo dłużej, ogólnie jest to w ch.... wolne. Pokaże Wam skrypt, jako że z php rzadko mam do czynienia to nie wiem w czym tkwi problem...
no i to właśnie ten piękny skrypt, niestety nie wiem w czym tkwi problem i jak to zmienić, ale poszukałem kogoś kto ma podobny problem i znalazłem takie rozwiązanie, które u mnie podziałało perfekcyjnie, a mianowicie zmienienie silniku tabeli na MYISAM, rekordy wczytują się szybciej niż dotychczas, dlaczego? Prosiłbym o odpowiedź i ewentualnie nakierowanie co jest nie tak w skrypcie, że na domyślnym silniku wczytuje się bardzo długo(przypomne, że na mysql5.1 wczytuje się bardzo szybko) Pozdrawiam |
|
|
21.01.2015, 08:31:25
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) |
zamiast robić jeden insert na rekord, co jest dość powolne, zrób to np w paczkach np po 1000 rekordów.
http://blog.piotrnalepa.pl/2011/03/03/mysq...yisam-a-innodb/ |
|
|
21.01.2015, 09:07:23
Post
#3
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%) |
poza tym chyba nie widziales dlugich insertow... toz to dzieciak jest jeszcze. po zapytaniu 300 linii ++ x 10 tysiecy zwatpisz we wszystko.
|
|
|
21.01.2015, 10:33:45
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Sekwencja insertów wykona się dużo, dużo szybciej jak zamkniesz ją w transakcję. http://dev.mysql.com/doc/refman/5.0/en/commit.html
|
|
|
21.01.2015, 13:52:28
Post
#5
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) |
... Prosiłbym o odpowiedź i ewentualnie nakierowanie co jest nie tak w skrypcie, że na domyślnym silniku wczytuje się bardzo długo(przypomne, że na mysql5.1 wczytuje się bardzo szybko) Od wersji mysql 5.5 InnoDB jest domyślnym silnikiem tabel tworzonych bez podania konkretnego silnika w CREATE TABLE. Przedmówcy wyjaśnili, że inserty do InnoDB wykonują się szybciej albo zawarte w jednej transakcji, albo jako jeden duży insert, albo też przy wyłączonym na czas insertów autocommit. Bo bez tego każdy insert jest osobną transakcją (InnoDB to silnik transakcyjny, w przeciwieństwie do wcześniejszego domyślnego MyISAM) a każda nawet najmniejsza zakończona transakcja z definicji wymaga zapisania stanu na dysku zamiast trzymania w buforach. Oczywiście powrot do MyISAM przywróci poprzedni stan działania, jednak w roku 2015 wypadałoby znać InnoDB, nie mówiąc o zaprzestaniu używania przestarzałych funkcji z API mysql_. http://dev.mysql.com/doc/refman/5.5/en/inn...default-se.html |
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 02:24 |