Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szybka baza danych mySQL?
Forum PHP.pl > Forum > Bazy danych > MySQL
timi222
Witam.

Mam problem ze strona, czasem musze czekac do 10 minut zanim zacznie sie ladowac, ponoc problem w samej bazie danych mySQL, nie znam sie na tym ale probowalem juz wiele rzeczy, od zmiany hostingu po odchudzanie strony, bez skutku.

Prosze o pomoc.

Adres strony: www.europebus.co.uk
Rafaeelloo
Może internet zmień? U mnie po 25 s już była załadowana. Internet z GPRS to nie ta era... faktycznie, strona się wolno ładuje ale da się to znieść, a nie do 10 min... Pokaż strukturę bazy to pomożemy Ci określić jakich pól należy użyć...
timi222
Dzieki za odzew. Z internetem ciebie nie rozumiem ... Strone sprawdzalem niejednokrotnie na kilku roznych laczach a posiadam lacze 8 mb, hosting tez zmienialem wielokrotnie ale chyba cos musi byc nie tak z mySQL, ja sie na tym nie znamiona, strone zlecilem osobie prywatnej ale już zaczynam tracic nerwy, strona jest w sieci od maja tego roku maksymalnie miałem 100 wchodzacych na dobe przez wyszukiwarki a od wczoraj nikt nie wchodzi, strona stala sie mniej widoczna w google. Robilem wszystko aby dobrze sie sama pozycjonowala, ale już trace nadzieje ... ;(

Na razie chodzi mi o przyspieszenie ladowania sie strony, wg kilku osob problem tkwi wlasnie w bazie danych.

Co mam dokladnie przeslac?

Pozdrawiam
Mephistofeles
A więc pokaż strukturę tej bazy, spróbujemy pomóc.
timi222
Czy moge przeslac to w jakims zalaczniku? Bo jest ogromne ... lub komus na emaila?
Crozin
Chodzi o samą strukturę bez danych (ewentualnie możesz zostawić po kilka rekordów na tabelę).

Możesz też pokazać zapytania, które wykonują się najdłużej (Slow Queries log)
timi222
Nie znam sie na tym otrzymalem strukture od wykonawcy mojej strony ... sad.gif


-- phpMyAdmin SQL Dump
-- version 3.3.7
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Czas wygenerowania: 21 Lis 2010, 19:32
-- Wersja serwera: 5.1.51
-- Wersja PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Baza danych: `europe97_europebu`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla  `cms_additional_htmlblob_users`
--

CREATE TABLE IF NOT EXISTS `cms_additional_htmlblob_users` (
 `additional_htmlblob_users_id` int(11) NOT NULL DEFAULT '0',
 `user_id` int(11) DEFAULT NULL,
 `htmlblob_id` int(11) DEFAULT NULL,
 PRIMARY KEY (`additional_htmlblob_users_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `cms_additional_htmlblob_users`
--

INSERT INTO `cms_additional_htmlblob_users` (`additional_htmlblob_users_id`, `user_id`, `htmlblob_id`) VALUES
(338, 1, 2),
(324, 1, 3),
(318, 1, 4),
(308, 1, 5),
(302, 1, 7),
(320, 1, 6),
(317, 1, 8),
(299, 1, 9),
(309, 2, 10),
(332, 1, 12),
(306, 2, 13),
(108, 1, 14),
(321, 1, 15),
(335, 1, 16),
(322, 1, 17),
(305, 1, 18),
(303, 1, 19),
(326, 1, 21),
(304, 2, 18),
(328, 1, 23),
(260, 1, 24),
(297, 2, 26),
(298, 1, 26),
(336, 2, 22),
(307, 1, 13),
(310, 1, 10),
(312, 1, 20),
(319, 1, 11);

-- --------------------------------------------------------

--
-- Struktura tabeli dla  `cms_additional_htmlblob_users_seq`
--

CREATE TABLE IF NOT EXISTS `cms_additional_htmlblob_users_seq` (
 `id` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `cms_additional_htmlblob_users_seq`
--

INSERT INTO `cms_additional_htmlblob_users_seq` (`id`) VALUES
(338);

-- --------------------------------------------------------

--
-- Struktura tabeli dla  `cms_additional_users`
--

CREATE TABLE IF NOT EXISTS `cms_additional_users` (
 `additional_users_id` int(11) NOT NULL DEFAULT '0',
 `user_id` int(11) DEFAULT NULL,
 `page_id` int(11) DEFAULT NULL,
 `content_id` int(11) DEFAULT NULL,
 PRIMARY KEY (`additional_users_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `cms_additional_users`
--


-- --------------------------------------------------------

--
-- Struktura tabeli dla  `cms_additional_users_seq`
--

CREATE TABLE IF NOT EXISTS `cms_additional_users_seq` (
 `id` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `cms_additional_users_seq`
--

INSERT INTO `cms_additional_users_seq` (`id`) VALUES
(0);

-- --------------------------------------------------------



--
-- Struktura tabeli dla  `cms_adminlog`
--

CREATE TABLE IF NOT EXISTS `cms_adminlog` (
 `timestamp` int(11) DEFAULT NULL,
 `user_id` int(11) DEFAULT NULL,
 `username` varchar(25) DEFAULT NULL,
 `item_id` int(11) DEFAULT NULL,
 `item_name` varchar(50) DEFAULT NULL,
 `action` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `cms_adminlog`
--

INSERT INTO `cms_adminlog` (`timestamp`, `user_id`, `username`, `item_id`, `item_name`, `action`) VALUES
(1272550941, 0, '', 0, 'File Manager', 'FileManager version 1.0.1 installed'),
(1272550941, 0, '', 0, 'Module Manager', 'Module version 1.3.1 installed.'),
(1272550942, 0, '', 0, 'nuSOAP', 'Installed'),
(1272550942, 0, '', 0, 'Theme Manager', 'Module version 1.1.1 installed.'),
(1272550942, 0, '', 0, 'TinyMCE WYSIWYG', 'Module version 2.5.5 installed.'),
(1272550948, 1, 'dfs', 1, 'dfs', 'User Login'),
(1272550991, 1, 'dfs', -1, '', 'Edited User Preferences'),
(1272551117, 1, 'dfs', -1, '', 'Edited Site Preferences'),
(1272551295, 1, 'dfs', 23, 'clean', 'Added Template'),
(1272551376, 1, 'dfs', 15, 'Home', 'Edited Content'),
(1272551385, 1, 'dfs', 22, 'NCleanBlue', 'Deleted Template'),
(1272551411, 1, 'dfs', 15, 'Home', 'Edited Content'),
(1272551496, 1, 'dfs', 0, 'Kreator formularzy', 'Moduł w wersji 0.6.1 został zainstalowany.'),
(1272551605, 1, 'dfs', 0, 'Newsletter Made Simple', 'Moduł w wersji 2.3.1 został zainstalowany.'),
(1272551651, 1, 'dfs', 0, 'Captcha', 'Module version 0.4 installed.'),
(1272551754, 1, 'dfs', 0, 'Moduł Statystyk', 'Moduł Statystyk w wersji 0.9.2 został zainstalowany.'),
(1272552176, 1, 'dfs', -1, '', 'Edited Site Preferences'),
(1272552203, 1, 'dfs', -1, '', 'Edited Site Preferences'),



to tylko czesc smile.gif baaaaardzo mala smile.gif

Zawsze moge przeslac calosc w zalaczniku jako txt w emailu, calosc ma 9 mb!
Sky_walker
Cytat(timi222 @ 20.11.2010, 20:19:17 ) *
Na razie chodzi mi o przyspieszenie ladowania sie strony, wg kilku osob problem tkwi wlasnie w bazie danych.

Strona wczytuje się u mnie 6.34sek <- to jest na neostradzie 2 megabity, znaaacznie wolniejsze niż Twoje łącze.

Oczekiwanie na stronę trwa 793ms, później jest 600ms odbierania danych... i to tyle jeśli chodzi o HTML/PHP. 1,5 sek ładowania.

To co sprawia, że twoja strona wolno się wczytuje to śmietnisko grafik - 49 obrazków do pobrania, wszystkie niby małe ale w wielkiej ilości. Autorowi strony radziłbym poczytać o tym i zastosować.

Z optymalizacji bazy danych zyskasz bardzo niewiele - nawet jeśli jakimś cudem różnica sięgała by 90% to i tak czas wczytywania spadłby ledwie o 0,7 sek. Z poscalania połowy grafik zyskasz coś pokroju 2,5 sek wczytywania - różnica wielka, a z tej strony dałoby się wydusić i jeszcze więcej.
timi222
Chodzi o to ze czasem laduje sie ok a czasem np po 2ej w nocy zanim zacznie sie ladowac to trzeba nawet lika minut poczekac.

Wiec w czyms musi byc problem.
Sky_walker
Hm... no dobrze, jeśli uważasz, że 49 grafik to nie problem proponuję wstawienie timerów w kod strony i policzenie co ile zajmuje w trakcie generowania witryny smile.gif
Wtedy będziesz wiedział ile co zajmuje ci czasu od strony generowania kodu, bez wliczania w to zapytań.

Ja zrobiłem jeszcze jeden test - tym razem wczytanie zajęło 9,91sek,
sam HTML (czyli połączenie z serwerem, wykonanie przez niego PHP, zapytań do bazy i rozpoczęcie przesyłania danych, a następnie odebranie całego kodu przez mojego firefoxa) to 2,40 sek.
7,51sek to pobieranie skryptów i grafik. Zastosowanie sprite'ów znacznie pomoże w ładowaniu strony smile.gif

ps. Kiedy Crozin poprosił cię o strukturę bazy miał na myśli kod między:
Kod
--
-- Struktura tabeli dla  `...`
--

a
Kod
--
-- Zrzut danych tabeli `...`
--

Czyli część CREATE TABLE IF NOT EXISTS - bez informacji w tabelach (od INSERT INTO, lista w nawiasach oddzielona przecinkami, tego nie potrzeba a zajmuje sproą większość z tych 9MB)

Tak na marginesie - nikt na forum www nie zoptymalizuje ci strony ot tak o, nawet jak udostępnisz nam 9MB swojej bazy danych - to i tak niewiele pomoże. Możemy powiedzieć, że tutaj może dałoby się zastosować TINYINT zamiast INT, a tamto pole w ogóle nie musi być typu TEXT, tutaj brakuje indeksu, tylko... co z tego? O optymalności bazy danych, decyduje w głównej mierze to jak i jakie operacje na niej wykonujesz.

Jeśli jesteś tylko klientem to niestety ale... raczej nie możesz nic zmienić samemu w tym systemie, żeby zauważyć znaczną poprawę. Możemy ci podpowiedzieć, żeby np. zastosować na tej stronie CSS Sprites, włączyć cache (z jakiegoś powodu jest no-store, no-cache, must-revalidate, post-check=0, pre-check=0), włączyć kompresję gzip, ale mówienie o tym jak zoptymalizować wykorzystanie bazy danych nie ma sensu - są o tym setki tutoriali w sieci, a my nie wiemy co w Twojej stronie jest nie tak.
timi222
Grafiki strony mają w sumie około 300kb i są maxymalnie zoptymalizowane (nie mogę pozwolić na kompresję rzędu 40% gdzie grafika będzie niewyraźna i odpychająca). Reszta to grafiki wgrane przez użytkownika strony, na te nie mam wpływu żadnego. Dodam jeszcze, że moja strona ma przynajmniej 3x więcej grafik, i nie ma problemów z wczytywaniem się.

Do cytatu "wszystkie niby małe ale w wielkiej ilości" proszę o konkrety.

'ps. Kiedy Crozin poprosił cię o strukturę bazy miał na myśli kod między:...' nie rozumiem nadal smile.gif

"Możemy ci podpowiedzieć, żeby np. zastosować na tej stronie włączyć cache (z jakiegoś powodu jest no-store, no-cache, must-revalidate, post-check=0, pre-check=0), włączyć kompresję gzip""
Ok, co i jak po kolei?

A CSS Sprites nie można wszędzie zastosować z racji ilości kolorów i kompresji. Generalnie nie ma gdzie tego zastosować, jedynie przy ikonach socjalnych na pasku które maja niespełna 2kb.

Jedyne co się osobiście dopatrzyłem, to menu - zastosowany skrypt typeface dodaje pliki convas dla utworzenia graficznych napisów. Może to on powoduje ilość niepotrzebnych grafik, choć w to wątpię bo te są generowane przez przeglądarkę, a nie ściągane z internetu. Ta opcja też jest na mojej stronie i nie ma problemów, jest nawet użyta w większej ilości miejsc.
Mephistofeles
Sprite'y można stosować zawsze, przecież istnieją też formaty takie jak PNG. Tu nie chodzi o samo zmniejszenie rozmiaru, bo ono rzadko jest zauważalne, ale o ilość żądań, która drastycznie spada.

Włącz jakiś profiler bazy, albo sprawdzaj w PHP, zobaczysz pewnie, że baza to tylko mały procent całości.
timi222
png używam w ostateczności właśnie z racji wagi plików.

"Możemy ci podpowiedzieć, żeby np. zastosować na tej stronie włączyć cache (z jakiegoś powodu jest no-store, no-cache, must-revalidate, post-check=0, pre-check=0), włączyć kompresję gzip""
Ok, co i jak po kolei?

Gdzie uaktywnia się gzip? Po stronie bazy, serwera czy CMS?
Mephistofeles
Nie wiem dlaczego, bo dobrze zapisany PNG jest często porównywalny z GIFem, a nawet czasami mniejszy.
Kompresję włącza się z poziomu serwera/PHP.
timi222
Jak na stronie włączyć cache? (z jakiegoś powodu jest no-store, no-cache, must-revalidate, post-check=0, pre-check=0)

Probowalem wlaczyc cache ale bez rezultatu sad.gif
Majzok
Ja bym obstawiał baze - pewnie porobione w zapytaniach joiny, a nie ma relacji ani index'ów.
timi222
Po pierwszej w nocy mozna zobaczyc jak strona czeka na odpowiedz zanim sie zaladuje
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.