|
|
|
|
|
для: cheops
(02.05.2006 в 11:53)
| | Хорошо.
Сделал новую тему в разделе MySQL:
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=16911&page=1
Переношу обсуждение вопросов туда. | |
|
|
|
|
|
|
|
для: DarkLord
(02.05.2006 в 09:20)
| | А что хотите настроить и для каких целей?
PS Под новые вопросы лучше заводить новые темы в разделе MySQL | |
|
|
|
|
|
|
|
для: DarkLord
(10.03.2006 в 11:30)
| | > MySQL оптимизируется под каждую операционную систему отдельно...
> Более того в Windows (как в прочем и Linux) она себя чувствует лучше, чем даже в FreeBSD...
А где взять рекомендации (или статьи) по оптимизации работы MySQL под Windows ? | |
|
|
|
|
|
|
|
для: DarkLord
(14.03.2006 в 11:28)
| | MySQL оптимизируется под каждую операционную систему отдельно... Более того в Windows (как в прочем и Linux) она себя чувствует лучше, чем даже в FreeBSD... | |
|
|
|
|
|
|
|
для: Trianon
(14.03.2006 в 10:29)
| | Если я не ошибаюсь, то Apache и MySQL первоначально создавались для Unix систем и, естественно, больше оптимизированы для них.
Могу накатать еще кучу тестов, на выборках из базы и пр. на которых будет видно это преимущество, но мне лень. А по поводу данного примера, то, конечно, выберу оптимальный размер блока, но уже ближе к завершению написания программы.
По поводу удобства администрирования (не говоря уже о надежности) я все чаще свой выбор делаю в пользу Linux.. | |
|
|
|
|
|
|
|
для: DarkLord
(14.03.2006 в 10:14)
| | По-моему, время выполнения в разных ОС отличается не на порядок. И даже не в разы. Так что выбор ОС жестко на этом аспекте не завязан, и его можно выполнять по другим критериям. Например, по удобству администрирования Вами, по уровню имеющегося опыта работы, или пр.
Попробуйте поиграть блокинг-фактором. Увеличить в 2-10 раз, уменьшить в 2-10 раз. Возможно, что при увеличении блокинг-фактора, скорость еще вырастет. Главное, не перестараться. Найти значение, при котором рост становится уже незначительным, и на нем работать. Это позволит и память сэкономить и время особо не тратить. | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 16:53)
| | Докладываю. ;-)
Системник: процессор Celeron 1,7 Ghz, 384 Mb оперативки.
1-ая система: Windows 2000pro, Apache 2.0.52, MySQL 4.1.14, PHP 5.0.2
2-ая система: ALTLinux 2.4 Master, Russian Apache PL30.20, MySQL 4.0.20, PHP 4.3.9
Размера оперативной памяти в системе хватало.
Тестировал на лог-файлах след размерах:
1. 419 Kb, 15000 записей
2. 3,3 Mb, 113851 записей
3. 3,7 Mb, 129433 записей
Результаты тестирования (время работы скрипта в секундах):
1 2
1 1,9 1,25
2 15,3 10,00
2 16,8 11,00
Очевидны преимущества использования Linux.
DarkLord
ЗЫ Я и стремлюсь чтоб с PHP все было хорошо, но и желательно
получать от этой деятельности не только моральное удовлетворение. | |
|
|
|
|
|
|
|
для: DarkLord
(13.03.2006 в 16:28)
| | Сколько времени выполняется? При каком блок-факторе? На какого размера логе? Интересно же...
А PHP я тоже недавно изучаю. Так что у Вас тоже скоро все будет ОК :) | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 14:09)
| | Спасибо за великолепный пример.
Действительно все заработало на отлично.
Не судите меня сильно строго - я начал программировать на PHP недавно,
и уровень у меня невысокий.
Тем не менее все вышеизложенное моего последнего мнения не меняет. | |
|
|
|
|
|
|
|
для: DarkLord
(13.03.2006 в 12:28)
| | Мне стало грустно. Настолько, что я написал вот это:
<?php
// ставим скрипт "на счетчик" (чтобы знать, как долго он выполнялся
$ttt=microtime();
$ttt=((double)strstr($ttt, ' ')+(double)substr($ttt,0,strpos($ttt,' ')));
$j=0; $blk_factor = 16384;
$handle = fopen("test.txt", "r");
$block = ''; $sep = "\n";
while (!feof($handle))
{
$block .= fread($handle, $blk_factor);
// $buffer=str_replace(array("\r", "\n"), array("#", $sep), $buffer);
$lines = explode($sep, $block);
$cnt = count($lines);
$block = $cnt <= 1 || substr($block,-1,1) == $sep
? "" : $lines[--$cnt];
if($block != "")
unset($lines[$cnt]);
$query="insert into sessions (dat, num) values "; $rsep = '';
foreach($lines as $buffer)
{
$buffer=ltrim($buffer);
$mbuf=substr("$buffer",0,10);
if (ereg ("([0-9]{2})/([0-9]{2})/([0-9]{4})", $mbuf))
{
$j++;
list($day, $month, $year, $hour, $minute, $second, $num) = sscanf($buffer, "%d/%d/%d %d:%d:%d %d");
//echo "Строка $j прочитана.<br>";
$isodate = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $month, $day, $hour, $minute, $second);
$query .= "$rsep('$isodate', '$num')"; $rsep = ',';
}
}
if($result=mysql_query($query)) echo "Сеансы связи записаны по : $isodate $num <br>";
else echo "<font color=red><b>Ошибка записи сеанса связи.</b></font><br>";
}
fclose($handle);
// считаем, как долго работал скрипт
$ddd=microtime();
$ddd=((double)strstr($ddd, ' ')+(double)substr($ddd,0,strpos($ddd,' ')));
echo ("<br>Время индексации: ".(number_format(($ddd-$ttt),3))." секунд<br>");
?>
|
Поглядите... поиграйте параметром blk_factor.
И подумайте, о том, что стоит сократить бешеную работу оценки синтаксиса строк.
Думаю, кое-какой эффект Вы увидите.
PS. Для отладки я использую echo '<pre>'; print_r($var); А под средствами диагностики имел в виду error_reporting = E_ALL в php.ini. | |
|
|
|
|