Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статистика 
:(
    Опции темы
m1kle
Дата 23.9.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



Год назад я написал программу своей первой статистики, цель была - собрать информациую откуда и сколько люедй приходят ко мне на сайты. По началу всё было просто отлично, но теперь всё это весит 60 Мб и загружается десять секунд. Нужно оптимизировать, я, попытался это сделать, но в силу своих знаний у меня это не очень получилось.

В таблице есть пять полей (IP(VARCHAR(15), SITE(VARCHAR(300), TIME(DATETIME), COMP(VARCHAR(200), WHERE(VARCHAR(100)). Есть ли какие-нибудь способы, приёмы, как это дело оптимизировать?


PM MAIL WWW MSN   Вверх
bobik02
Дата 23.9.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



Как один из вариантов: Перелить данные за прошлые  квартал/год/месяц в "бекапную" таблицу ...


--------------------
Have a nice day
PM   Вверх
m1kle
Дата 23.9.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



bobik02, Хорошая идея, только как сделать бекапную таблицу, и в чем её отличия от обычной?

PS: Но ведь популярность проектов растет и новой таблицы хватит только на полгода
PM MAIL WWW MSN   Вверх
bobik02
Дата 23.9.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



А  какие запросы  у Вас там  выполняются ?


--------------------
Have a nice day
PM   Вверх
MoLeX
Дата 23.9.2008, 17:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



скрипт в студию для начала (может что подправить можно)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
m1kle
Дата 23.9.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



В скрптах примитивизм полный.

Код

$ip=$_SERVER['REMOTE_ADDR'];
$site=@ $_SERVER['HTTP_REFERER'];
$comp=$_SERVER['HTTP_USER_AGENT'];
$time=date("Y-m-j, H:i:s");
$where=$_SERVER['SCRIPT_FILENAME'];

if(!$site) $site="n";

$q_ins_enter=mysql_query("insert into `enters` (`ip`,`site`,`time`,`comp`,`where`) values ('$ip','$site','$time','$comp','$where')") or die(mysql_error());


PM MAIL WWW MSN   Вверх
bobik02
Дата 23.9.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



Ну добавления это понятно, а вот с выводом(отчётами) как  код ?


--------------------
Have a nice day
PM   Вверх
password
Дата 23.9.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.9.2008
Где: Украина, Сумы

Репутация: нет
Всего: 8



Пару дней назад писал.
У меня тоже ограничения по размеру бд. Так придумал для себя, может конечно сильно грамозко, но разбил на 3 базы:

1:
CREATE TABLE IF NOT EXISTS `stat_osn` (
              `site` varchar(80) NOT NULL,
              `kols` int(15) NOT NULL
            ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Статистика посещений - основная'

2:
CREATE TABLE IF NOT EXISTS `stat_ip` (
              `ip` varchar(50) NOT NULL
            ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Статистика посещений - уникальные ip'

3:
CREATE TABLE IF NOT EXISTS `stat_mon` (
              `site` varchar(80) NOT NULL,
              `ip` varchar(60),
              `date_in` datetime default '0000-00-00 00:00:00'
            ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Статистика посещений - за последний месяц подробная'

В 1 записываю для данного сайта kols+1;
Во 2-ю записываю и по ней же сравниваю иникальные ip;
В 3-ю записываю подробный отчет со всеми вхождениями, и храню только определенное время например - месяц:
 $dd1 = date("Y-m-d H:i:s", mktime(0,0,0,date("m")-1,date("d"),  date("Y")));
 $SQL2="delete from `stat_mon` where `date_in`<'$dd1'";
 $r2 = mysql_query($SQL2);

А дальше информер рисую с двумя цифрами, уникальных ip и количество посещений из 1 таблицы.

Это сообщение отредактировал(а) password - 23.9.2008, 18:31
PM MAIL Skype   Вверх
m1kle
Дата 23.9.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



$q_stat=mysql_query("select `stat`, `where`, `year` from `stat` WHERE `status` = '1' and `category` LIKE '%$categ%' order by `id` desc LIMIT $col2, 20") or die(mysql_error());
PM MAIL WWW MSN   Вверх
teroni
Дата 23.9.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Индексы все нужные в таблице созданы?
PM MAIL   Вверх
m1kle
Дата 23.9.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



Какие индексы?
PM MAIL WWW MSN   Вверх
teroni
Дата 23.9.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



http://www.mysql.ru/docs/man/MySQL_indexes.html

Для огромных таблиц - нужная вещь.. Позволяет ускорить время выполнения запросов. 
PM MAIL   Вверх
m1kle
Дата 23.9.2008, 21:46 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



teroni, прочитаю завтра, может размер некоторых полей уменьшить, или есть более экономные типы, например свой тип поля для IP адреса?
PM MAIL WWW MSN   Вверх
mr.fox
Дата 24.9.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: -1
Всего: 2



Цитата(m1kle @  23.9.2008,  21:46 Найти цитируемый пост)
например свой тип поля для IP адреса? 

Int + ip2long smile

Цитата(m1kle @  23.9.2008,  18:36 Найти цитируемый пост)
LIKE '%$categ%' 

желательно от like избавиться. Он занимает много времени.

Цитата(bobik02 @  23.9.2008,  16:38 Найти цитируемый пост)
Как один из вариантов: Перелить данные за прошлые  квартал/год/месяц в "бекапную" таблицу ... 

солидарен. На мой взгляд лучшее решение. Как только основная таблица начинает тормозить, переносить часть/все ее данные в бэкапную. 

А вообще конечно это большой поток информации. У меня на сайте начало тормозить после того как таблица выросла далеко за 1гб. 

Это сообщение отредактировал(а) mr.fox - 24.9.2008, 00:37
PM MAIL WWW ICQ   Вверх
m1kle
Дата 26.9.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



teroni, там очень плохо написано, я совсем не понял, для чего нужны индексы, и как они работают. Может ты объяснишь?

Есть вопрос, как быстро превратить таблицу в бекапную средствами HeidiSQL?

И ещё вопрос: может просто не надо записывать посещения сайта ботами?



Это сообщение отредактировал(а) m1kle - 26.9.2008, 13:57
PM MAIL WWW MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0936 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.