Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хостер гнется от базы на 100 тыс. записей! Слишком большая база или кривой скрипт? 
:(
    Опции темы
witali
  Дата 3.7.2003, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хостер гнется от базы на 100 тыс. записей!
Есть база на 100 тыс. записей - 40Мб, почти все поля FULLINDEX

Хостер говорит: сильно большая нагрузка:

Top Process %CPU 11.0 /usr/bin/perl cat.pl

скрипт cat.pl - делает:
SELECT и UPDATE по основной таблице (100000 записей)
и 2 SELECTа по 2-м мелким таблицам.

Хостер:
Processor: Pentium® 4 CPU 2.40GHz
Memory: 1025596k/1040320k

Слишком большая база или кривой скрипт?
Спасибо за ответ.
PM   Вверх
Step
Дата 3.7.2003, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



скрипт кривоватый.... это мое мнения, 100000 это не много....


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Cashey
Дата 4.7.2003, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



А какой формат таблицы? И работает она через драйвера или на прямую? Для FoxPro, например, 100000 записей это не повод материться smile.gif а вот если это Paradox и работает с помощью драйверов тогда вероятность перегрузки велика.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
witali
Дата 7.7.2003, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



База MySQL.

Cкрипт top.pl выполняется каждый час. Грузит сервер:

Top Process %CPU 10.0 /usr/bin/perl top.pl

таблица:

url varchar(120) not null,
title varchar(80) not null,
description varchar(200) not null,
keywords varchar(200) not null,
dat DATE not null,
category TEXT not null,
catid TEXT not null,
rank INT(5) not null,
url2 TEXT not null,
FULLTEXT (url),
FULLTEXT (title),
FULLTEXT (description),
FULLTEXT (keywords),
UNIQUE (url),
UNIQUE (title)

Код:

#!/usr/bin/perl

use DBI;
require "/home/metaws/public_html/cgi-bin/main.pl";

push (@INC, "$homedir/");
$step=30;
print "content-type:text/html\n\n";

$kritery="SELECT url, title, description, rank FROM urls WHERE rank > '0' ORDER BY rank DESC LIMIT 0, $step";

my $dbh = DBI -> connect("dbi:mysql:database=$dbname;host=$dbhost;port=$dbport", "$dblogin", "$dbpass") or die "Can't connect to sql server. Reason: $DBI::errstr";
if (!$ENV{'MOD_PERL'}) { $dbh->{'Warn'} = 0;}

my $result = $dbh->prepare("$kritery") or die "Can't connect to sql server. Reason: $DBI::errstr" ;

$result->execute();

while (my $ln = $result->fetchrow_hashref()) {
$title=$ln->{'title'};
$rank=$ln->{'rank'};

if (length($title) > 40) { $title=substr($title,0,37); $title.="..."; }

$list.="<li><a href=\"http://$ln->{'url'}\">$title</a> ($rank)</li>\n";
}
$dbh->disconnect();

$list= "<ol>$list</ol>\n";

open (COUNTER, ">$html/toptext.txt");
print COUNTER "$list";
close (COUNTER);

print $list;

__________________________________________

И от него гнется Pentium® 4 CPU 2.40GHz!
PM   Вверх
TiGR
Дата 11.7.2003, 10:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А чего тут удивляться?

Критерий поиска по rank - столбец, на котором у тебя нет индекса, вот он и лопатит все 40 метров.

Потом, при использовании ORDER BY, ему приходится лопатить все результаты (идекс тут особо не помогает) где rank>0. Если таких строк сорок тысяч - это неутешительно.

Итак,
1. Добавь индекс на rank.
2. Если резултатов не один десяток тысяч, попробуй как-то ограничить число выводимых строк помимо ORDER BY.

И это, хорошо использовать EXPLAIN.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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