Thread View: pl.comp.bazy-danych
7 messages
7 total messages
Started by Borneq
Fri, 20 May 2016 19:17
wolne select count(*)
Author: Borneq
Date: Fri, 20 May 2016 19:17
Date: Fri, 20 May 2016 19:17
4 lines
1047 bytes
1047 bytes
Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa pobranie danych, ale samo select count(*) wciąż się wykonuje. Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, ale podanie ilości rekordów?
Re: wolne select count(*)
Author: Ronald Kuczek
Date: Fri, 20 May 2016 19:31
Date: Fri, 20 May 2016 19:31
10 lines
1395 bytes
1395 bytes
W dniu 20.05.2016 o 21:17, Borneq pisze: > Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa > pobranie danych, ale samo select count(*) wciąż się wykonuje. > Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, > ale podanie ilości rekordów? Pokaż show processlist. Byś może Twoje zapytanie czeka na wykonanie innego zapytania zmieniającego tabelę, którą właśnie odpytujesz. Pozdrawiam Rony
Re: wolne select count(*)
Author: Borneq
Date: Fri, 20 May 2016 20:37
Date: Fri, 20 May 2016 20:37
10 lines
1479 bytes
1479 bytes
W dniu 20.05.2016 o 21:31, Ronald Kuczek pisze: > W dniu 20.05.2016 o 21:17, Borneq pisze: >> Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa >> pobranie danych, ale samo select count(*) wciąż się wykonuje. >> Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, >> ale podanie ilości rekordów? > Pokaż show processlist. Byś może Twoje zapytanie czeka na wykonanie > innego zapytania zmieniającego tabelę, którą właśnie odpytujesz. Jest na zdalnym serwerze, być może ktoś coś zapisuje do bazy
Re: wolne select count(*)
Author: Robert Winkler
Date: Sat, 21 May 2016 07:39
Date: Sat, 21 May 2016 07:39
31 lines
2296 bytes
2296 bytes
W dniu 20.05.2016 o 21:17, Borneq pisze: > Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa > pobranie danych, ale samo select count(*) wciąż się wykonuje. > Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, > ale podanie ilości rekordów? Witaj w klubie Mam dokładnie to samo u siebie :( Przy czym serwer stoi u mnie w firmie a nie na jakimś hostingu i wiem że nikt inny w tym czasie niczego nie robi z moją tabelą. Mam tabele, niedużą, jakieś 28 milionów rekordów, 780 MB z danymi plus jakieś 300MB na indeksy, engine InnoDB bo muszę mieć transakcje gdy zmieniam te dane. Wołam zapytanie: select count(*) from `moja_tabela` where `created_at` > '2014-05-01' i czekam kilka minut na odpowiedź serwera. Nie ważne, że na tabeli mam indeks zawierający tylko kolumnę created_at dla mysql'a nie ma to żadnego znaczenia i w niczym to nie przyspiesza jego działania. Praca z mysql'em jest czasem naprawdę frustrująca, szczególnie, że kilka lat temu pracowałem w projekcie gdzie serwerem był MS SQL Server, a baza miała kilkanaście terabajtów. Gdy wtedy count(*) trwał ponad 100 ms to był to znak że coś jest nie tak z bazą (przykładowo engine używa złego indeksu bo się statystyki rozjechały po batch loadingu) -- Robert
Re: wolne select count(*)
Author: M.M.
Date: Sat, 21 May 2016 08:55
Date: Sat, 21 May 2016 08:55
37 lines
2810 bytes
2810 bytes
On Saturday, May 21, 2016 at 9:39:29 AM UTC+2, Robert Winkler wrote: > W dniu 20.05.2016 o 21:17, Borneq pisze: > > Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa > > pobranie danych, ale samo select count(*) wciąż się wykonuje. > > Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, > > ale podanie ilości rekordów? > > Witaj w klubie > Mam dokładnie to samo u siebie :( > Przy czym serwer stoi u mnie w firmie a nie na jakimś hostingu > i wiem że nikt inny w tym czasie niczego nie robi z moją tabelą. > > Mam tabele, niedużą, jakieś 28 milionów rekordów, > 780 MB z danymi plus jakieś 300MB na indeksy, > engine InnoDB bo muszę mieć transakcje gdy zmieniam te dane. > Wołam zapytanie: > select count(*) from `moja_tabela` where `created_at` > '2014-05-01' > i czekam kilka minut na odpowiedź serwera. > Nie ważne, że na tabeli mam indeks zawierający tylko kolumnę created_at > dla mysql'a nie ma to żadnego znaczenia > i w niczym to nie przyspiesza jego działania. > > Praca z mysql'em jest czasem naprawdę frustrująca, > szczególnie, że kilka lat temu pracowałem w projekcie > gdzie serwerem był MS SQL Server, a baza miała kilkanaście terabajtów. > Gdy wtedy count(*) trwał ponad 100 ms > to był to znak że coś jest nie tak z bazą > (przykładowo engine używa złego indeksu > bo się statystyki rozjechały po batch loadingu) > > -- > Robert Dlatego silniki baz danych powinny mieć opcję, która wzbogaca indeksy o liczniki. Pozdrawiam
Re: wolne select count(*)
Author: Wojtek Gapiński
Date: Sat, 21 May 2016 11:15
Date: Sat, 21 May 2016 11:15
11 lines
1380 bytes
1380 bytes
W dniu 20-05-2016 o 21:17, Borneq pisze: > Zapuściłem select count(*) na mySQL, aby zobaczyć jak długo potrwa > pobranie danych, ale samo select count(*) wciąż się wykonuje. > Dlaczego to tak długo trwa? rozumiem że np. distinct by trwało długo, > ale podanie ilości rekordów? Spróbuj wykonać select count(id), gdzie "id" jest indeksowanym polem. -- Wojtek Gapiński http://www.jwmprojekt.pl
Re: wolne select count(*)
Author: M.M.
Date: Sat, 21 May 2016 16:17
Date: Sat, 21 May 2016 16:17
1 lines
1364 bytes
1364 bytes
jesli ma klauzule where na polu cerate, to moze count(create)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads