SEA, 16.04.2004 20:11:12 :
Что подразумевается под "скоростая система по обработке простейших запросов"?
Ну, я же расписал вначале - "типа инкрементировать число в заданном поле и записать другое число в другое по заданному числовому (среди сотен записей) и строковому (среди ~30 тыс. записей) ключу"
На самом деле, внимательно понаблюдав за MySQL понял, что всё же, АвиаТОП его почти не грузит. Не смотря на то, что обращений к нему больше всего.
Всё же, основной потребитель - форум. И тут уже только железо наращивать
>Хранить БД в файлах может быть даже медленнее, зависит от их количества и структуры. Да, естественно. Но тут может быть иногда выигрыш с того, что БД загружается меньше
>1) использовать stored procedures - они выполняются локально на ДБ сервере. Хм. В MySQL?
>2) индексация. Естественно.
>3) избегать медленных вещей в SQL-запросах. Это может касаться многого. >Важно построение запроса. По типу - не использовать никаких виртуальных таблиц и view. Там нет никаких хитростей. Тупо:
code php
<?
$result = mysql_query ("SELECT * FROM avia_top_pages WHERE url='$url'");
if(!$line)
mysql_query ("INSERT INTO avia_top_pages (url,count,start,last) VALUES ('$url',1,UNIX_TIMESTAMP(),UNIX_TIMESTAMP());"); else
mysql_query ("UPDATE avia_top_pages SET start=start, count=count+1, last=UNIX_TIMESTAMP() WHERE url='$url';");
//...
$result = mysql_query ("SELECT * FROM avia_top_counts WHERE id='$id'");
if(!$line)
{
//...
mysql_query ("INSERT INTO avia_top_counts (id,count,start,ips) VALUES ('$id',0,UNIX_TIMESTAMP(),'');"); }
//...
mysql_query ("UPDATE avia_top_counts SET count=count+1 WHERE id='$id';");
//...
mysql_query ("UPDATE avia_top_counts SET ips='$ips' WHERE id='$id';");
?>
Интексы по `url` и `id`, конечно же есть
>4) Выделить БД достаточно памяти, чтобы ее самый используемый сегмент уместился в память. Вот с этим самая большая проблема
>5) быстрый диск тоже плюс, stripe еще лучше (можно с зеркалом). Аналогично. Т.е. диск итак SCSI 10000, но страйп там ну очень не рекомендуется. 1U-корпус
>6) Логи - на другой быстрый диск. это позволит им работать впаралель. Да логи и не ведутся с такими темпами.
>Забыл, надо еще посмотреть в Execution Plan и Client statistics в MS-SQL…
Дальше »»»
… чтобы понять рекурсию, нужно сперва понять рекурсию …