Автор: AlxR (---.ru)
Дата: давно
to Flint-San
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM MyTable1 WHERE ....
SELECT count(1) FROM MyTable2 WHERE ....
2) SELECT * FROM MyTable(nolock) WHERE
согласен, но я бы сделал еще проще - немножко что называется денормализовал базу - добавил избыточные данные, а в частности в таблице с описанием конкретной темы (ну там название, автор че-то еще) добавил поле - счетчик количества ответов, который бы увеличивал на единицу при добавлении нового сообщения. При этом серверу не надо ничего высчитывать - надо лишь прочитать поле. И так бы поступил со всеми счетчиками.
Если честно - я вообще не понимаю - чего этот сайт тормозит. Хотя, конечно, я не знаю что там за комп пользуется и все остальные вещи. И советовать, конечно тут довольно неблагодарное дело - я понимаю, что там знающие люди работают. Так что это просто мысли вслух, просьба авторов - не обижаться. :)
ПО идее самый тяжелый момент на форуме - это поиск. Все остальное - это в 90% случаев - чтение ветки, в остальных 10% - запись. ПРи правильно спроектированной индексированной базе это вообще даже теоретически напрячь сервак не может. Во всяком случае MS SQL :) А вот поиск можно выделить на отдельную машину. В лучшем варианте я бы поставил три машины: собственно web сервер, который отдавал бы статику и готовил динамические страницы и два sql сервера - один для чтения-записи, второй - для поиска.
| |