Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zwolnienie bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
dleery
Witam,

buduje aplikacje internetowa i wlasnie jestem w fazie testow wydajnosciowych
bazy danych...

Mam taka sytuacje... kilka dni temu z 2 uzytkownikow zapuscilem dodanie po
20 000 zlecen. W sumie 40000 a w bazie danych bylo to 240000 wierszy w 2
tabelach(t1:40000 + t2:200000). Wszystko wykonalo sie w miare szybko ale ta
sama operacja zrobiona dzisiaj powoduje ze... mozna czekac i czekac
Zauwazylem ze baza zwalnia w postepie geometrycznym - 1000 zlecen w ok 10s
1500 zlecen ok 20s itd.... przy 60000 zleceniu dodaje ok 1-2 na sekunde!!!
co moze powodowac takie zachowanie? Jak temu zaradzic?

wszystko na localhost

Pozdrawiam
mike
Podejrzewam, że normalizacja u Ciebie kuleje.
Problem może być spowodowany źle dobranymi indeksami lub ich brakiem, lub po prostu złą konstrukcją tabel.

Jeżeli możesz to przedstaw nam konstrukcją tabel i wtedy może coś się rozjaśni.
mhs
Może przy obecnie przeprowadzanych testach masz jakieś uruchomione w tle inne aplikacje, które obciążają procesor, dyski twarde?
dleery
  1. CREATE TABLE `t1` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `p1` tinyint(4) DEFAULT NULL,
  4. `p2` varchar(50) NOT NULL DEFAULT '0',
  5. `p3` int(10) UNSIGNED NOT NULL DEFAULT '0',
  6. `p4` varchar(255) NOT NULL DEFAULT 'Brak',
  7. `p5` int(10) UNSIGNED NOT NULL DEFAULT '0',
  8. `p6` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  9. `p7` varchar(60) NOT NULL DEFAULT '0',
  10. `p8` varchar(12) NOT NULL DEFAULT '0',
  11. `p9` varchar(60) NOT NULL DEFAULT '0',
  12. `p10` varchar(12) NOT NULL DEFAULT '0',
  13. `p11` int(10) UNSIGNED NOT NULL DEFAULT '0',
  14. `p12` decimal(10,1) NOT NULL DEFAULT '24.0',
  15. `p13` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  16. `d14` bigint(20) NOT NULL DEFAULT '0',
  17. `p15` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  18. `p16` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  19. `p17` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  20. `p18` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  21. `p19` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  22. `p20` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  23. `p21` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  24. `p22` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  25. `p23` decimal(10,1) NOT NULL DEFAULT '13.6',
  26. `p24` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  27. `p25` int(10) UNSIGNED NOT NULL DEFAULT '0',
  28. `p26` int(10) UNSIGNED NOT NULL DEFAULT '0',
  29. `p27` int(10) UNSIGNED NOT NULL DEFAULT '0',
  30. `p28` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  31. `p29` int(10) UNSIGNED NOT NULL DEFAULT '1',
  32. `p30` int(10) UNSIGNED NOT NULL DEFAULT '0',
  33. `p31` decimal(10,4) NOT NULL DEFAULT '0.0000',
  34. `p32` int(10) UNSIGNED NOT NULL DEFAULT '0',
  35. `p33` int(10) UNSIGNED NOT NULL DEFAULT '1',
  36. `p34` tinyint(3) UNSIGNED DEFAULT '0',
  37. `p35` tinyint(3) UNSIGNED DEFAULT '0',
  38. `p36` tinyint(3) UNSIGNED DEFAULT '0',
  39. `p37` int(10) UNSIGNED NOT NULL DEFAULT '0',
  40. `p38` decimal(10,2) NOT NULL DEFAULT '0.00',
  41. `p39` int(10) UNSIGNED NOT NULL DEFAULT '30',
  42. `p40` int(10) UNSIGNED NOT NULL DEFAULT '0',
  43. `p41` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  44. `p42` int(10) UNSIGNED NOT NULL DEFAULT '0',
  45. `p43` bigint(20) NOT NULL DEFAULT '0',
  46. PRIMARY KEY (`id`),
  47. UNIQUE KEY `id` (`id`)
  48. ) TYPE=MyISAM;
  49.  
  50.  
  51. CREATE TABLE `t2` (
  52. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  53. `p1` int(10) UNSIGNED NOT NULL DEFAULT '0',
  54. `p2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  55. `p3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  56. `p4` tinyint(3) DEFAULT '-1',
  57. `p5` decimal(10,4) DEFAULT '0.0000',
  58. `p6` tinyint(3) UNSIGNED DEFAULT '0',
  59. `p7` int(11) NOT NULL DEFAULT '0',
  60. `p8` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  61. `p9` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  62. `p10` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  63. `p11` int(10) UNSIGNED NOT NULL DEFAULT '0',
  64. PRIMARY KEY (`id`),
  65. UNIQUE KEY `id` (`id`)
  66. ) TYPE=MyISAM;



1 rekord z t1 == 5 rekordow z t2 dla kazdego zlecenia. Indeksy sa tylko na PRIMARY i na polu id.

Dodatkowo powiem ze jesli usune wszystkie dane z tabel i zrobie OPTYMIZE to troche przyspiesza na poczatku ale jesli usune je i nie zoptymalizuje to wykonuje sie jeszcze wolniej nawet jesli dodaje tylko zalozmy 1000 zlecen.
Nie mam w tle wiecej procesow niz kiedy dzialalo sad.gif

Pozdrawiam
mhs
Przeglądam strukture Twojej bazy danych i zastanawiam się co to jest. Co to są za tabele, co to są za pola (p1 ... pN). Odnoszę wrażenie, że projekt bazy danych jest trochę źle zrobiony i najprawdopodobniej tutaj leży przyczyna kiepskiej wydajności. Wykorzystaj EXPLAIN i zobacz co tam się dzieje. Pozakładaj indeksy na klucze obce oraz pole po których często wyszukujesz.
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.