Santyago

Рейтинг
30
Регистрация
15.07.2008
T.R.O.N:
Ваша, дорогой человек

Утверждение о том, что "сервак ложиться по переполнению памяти" из-за использования memcached - это полная некомпетентность и "сказать абы что сказать".

T.R.O.N:
я поэтому и сказал, что пыхом не знаимаюсь... Аппач имеет свои сессии, как почти и любой иной веб сервер (иначе оно просто захлебнется)..
Даже у старенького перла была библиотека для работы с ними Apache::Session

Феерическая некомпетентность. Не позортесь, молодой человек.

T.R.O.N:
А то что пых стал движком... это супер. Ждите, бирман придет.. он такое любит

Вам знакомо устоявшееся в узких кругах выражение "PHP engine"? Ну, да... Вы же не "пыхом не занимаетесь"... Тогда может хватить позориться или очень хочется поспорить?

T.R.O.N:
а причем тут папка? Данные сессии просто исчезнут, когда сессия заканчивается... (если кривые руки не изменят настройки)
как делать именно на пыхе, никогда не интересовался.. об окончании сессии возникает событие сервера. Для IIS это Session_OnEnd.... об аппачи - читайте

При чём тут Апач? Сессии организовываются движком PHP. Никаких событий на эту тему этот движок не генерирует. Перед тем как посоветовать очередную глупость, неплохо было бы хоть чуть-чуть в теме разбираться.

T.R.O.N:
и сервак ложиться по переполнению памяти... оченнь круглые колеса

Ничего личного, но это очередная глупость.

PHP надо собрать с ключём --with-iconv

Senator007:
Добрый день, Уважаемые специалисты!

Помогите пожалуйста разобраться и найти пусть в следующем вопросе:
Есть например таблица почти в миллион строк:

table sms (myisam)
id int
people_in int (связь на табличку с юзерами)
people_out int (связь на табличку с юзерами)
tema char (50)
core text
dt datetime

в которой содержаться сообщения от пользователей (от кого и кому).. в пике при частых insert новых строк и удалении прочитанных, происходят задержка в чтении..

Как грамотно организовать дальнейшую разработку и масштабируемость, если мне как раз и необходимо читать из неё то что было добавлено.. Ведь кол-во insert будеn расти и она будет падать.. Перевод на транзакции? Но это размер будет расти, а для того чтобы достать одну свежую последнюю запись нужно будет смотреть по всей таблице! Не вариант, разбить на партишены? Да можно, но это тоже временный выход..
Каким образом это например делает на крупных проектах, если база на одном сервере и если база на двух и более?

Варианты:

1. INSERT DELAYED в помощь в случае использования MyISAM

2. Использование InnoDB

Транзакции тут ни при чём. Проблема в уровне изоляции и умении движка делать row-lock.

Senator007:
Второй вопрос:

Есть табличка people

id int
name char(40)
last_time (время в секундах от 1970)

в поле last_time делает update текущего времени при заходе пользователя на половине страниц.
Табличка участвует практически в каждых запросах на сайте (отобразить сообщения, статьи, дневники и прочее), чтобы было видно этот участник в сети или нет. Соответственно при высокой нагрузке updatов больше и происходит lock по селекту.. Какой здесь путь масштабируемости? Где хранить данные о посещении и как и как их использовать в частых запросах?

Поделитесь пожалуйста опытом, а то я только начинаю, и уже уткнулся в стопор..
Заранее благодарен!

Грамотно это делается через memcached. Заводится шаред массив с активными сессиями пользователей. Дальше начинаются вариации в зависимости от постановки задачи.

Santyago добавил 12.02.2010 в 12:57

T.R.O.N:
1. переходят с мускула на что-то серьезней, тот-же MsSql....
2. Есть понятие кластерные сервера...
3. Можно искать умные решения.. например.. делать базу, где хранится только актуальная информация, допустим за последние неделю/сутки/час, в конце дня ее переливать в общую, аля архив...

Если задача именно в инсертах, а не апдейтах, то после слияния баз, делается предварительный расчет всего и создается результат.

А ещё, говорят, бывают велосипеды с квадратными колёсами...

netwind:
Santyago, нет,пардон. ваш способ тоже полностью "материализует" данные.
разве что при большом числе постов самообъединение очень невыгодно. если попробовать на большой базе, то можно и не дождаться.

Как раз такой джоин при нормально построенных индексах будет эффективнее, чем подзапрос на каждую запись из таблицы постов (к тому же ещё и с группировкой). Ход мысли в исходном запросе я, честного говоря, вообще не понял. Дикость какая-то.

ЗЫ. Миллионах на 10 записях скорее всего загнётся. :) Там временная таблица будет строиться вечность.

netwind:
Santyago, не должен, по очевидной причине, с которой ТС и пришел.

А Вы пробовали?

netwind:
Santyago, а вы свое запускать пробовали?

А что? Не работает? :D

DELETE wp1 FROM wp_posts wp1

INNER JOIN wp_posts wp2

WHERE wp1.post_title=wp2.post_title AND wp1.id > wp2.id

sma858:
Да, действительно есть над чем задуматься.

Практически ежедневно находятся новые дыры к различным компонентам, модулям, плагинам этих движков и многие дыры разработчики еще не залатали.

Там не над чем задумываться.

Давать подобные ссылки - это подход дилетанта, расчитанный на точно таких же дилетантов.

Массовый эффект "ВАУ!!! В Друпале СТОЛЬКО ДЫР????!!!!"

И только единицы способны разобраться в том, ГДЕ именно дыры, какой ущерб можно было бы нанести сайту, в каких версиях движка/модулей обнаружена уязвимость, были ли они пропатчены в следующих версиях...

Печально.

И самое печальное, что эти же дилетанты с криками "Друпал - для ГС" начинают изобретать велосипеды, тратя средства заказчиков, и в итоге ОЧЕНЬ НАИВНО считают, что результат их работы не подвержен взлому с получением доступа к сайту, что сайты нельзя будет использовать для XSS, и т.п.

Это вдвойне печально.

И для ТС мой "отзыв".

Найдите пару килобаксов и закажите разработку по ТЗ у грамотных людей или у веб-студии. Там Вам расскажут и на каком движке надо делать, и почему именно на этом, и что такое "мерчант", и как будет обеспечиваться безопасность.

Если же пары килобаксов нет, то лучше даже не думать о том, чтобы поднимать сервис с прямыми продажами.

Всё вышеизложенное - ИМХО, защищённое авторскими правами. :)

netwind:
То есть вы считаете, что возможность сэкономить 1G памяти не является конкурентным преимуществом для CMS?

Я считаю, что когда для базы данных принципиален вопрос, сможет ли она обработать 20 000 запросов в секунду или только 15 000, то уже не идёт речь о дополнительных расходах в 100 баксов. Не так ли?

Если мы тут чисто теоретически пофлудить решили, есть ли плюсом экономия 1 Гб оперативы для абстрактной ЦМС на абстрактном сервере, то увольте... :)

netwind:
На всякий случай напомню обстановку на рынке хостинга : VPS с 192Мб - это "нормальный" тариф. Кое-как работающий дисковый массив с кучей клиентов - в порядке вещей. Диски 10000 RPM - вообще шик.

На всякий случай напомню, что сервак указанной конфигурации сгодится разве что для хостинга псевдо-проектов, которые когда-нибудь может быть заработают денег. Как только траф переваливается за 10 тысяч, этот проект в умелых руках автоматически становится монетизируемым и если он не способен заработать 200 баксов за дедик, то на кой было вообще заморачиваться?

Ещё раз. Мы говорим о "принципиальной разнице" в работе разных моделей БД под конкретный спектр задач или пытаемся найти абстрактного коня в вакуме и доказать, что InnoDB на сервере со 192Мб памяти будет обрабатывать всего лишь 1500 конкурентных запросов в секунду против 2000 на MyISAM? Если второй вариант - то я откланиваюсь. Приятно было пообщаться.

Santyago добавил 04.02.2010 в 03:48

Pandabeer:
Как известно из логики, чтобы опровергнуть ваше категоричное утверждение, достаточно одного исключения. Вот вам такое исключение: если у вас сайт интернет-магазина, или просто продажи каких то услуг на сайте (например, вип-статусы пользователей), хотелось бы вам поиметь гемор с ручным восстановлением операций в результате падения базы ? Лично мне - нет. Значит транзакции в таком случае необходимы, а ваше утверждение ложно.

О... А вот здесь чувствуется сильный собеседник... :)

Теперь уточняем: речь идёт о "быстрой и маленькой" ЦМС "для широкого спектра задач" или о полновесном Инет-магазе? Может я не силён в терминологии, но для меня это принципиально разные задачи. И конкретно под задачу Инет-магаза, да, я выбрал бы транзакционную БД. По ряду преимуществ, которые мы оба, думаю, знаем. Для остального спектра 99% сайтов этот выбор совершенно не принципиален, т.к. как для большинства сайтов основой является несложная структура для хранения контента и большинство операций по его обновлению (не столь частому!) атомарны по своей природе, а основной упор делается на скорость выборок. Скорость выборок опять таки же для большинства сайтов не принципиальна. А когда она принципиальна, то это уже проекты такого масштаба, когда не спрашивают "какую БД выбрать?" Т.о. я настаиваю на том, что решение спора о применимости обоих моделей БД для данного спектра задач такой: скорость выборок примерно одинакова. И исходить при решении дилемы "InnoDB или MyISAM" надо не из производительности, а из реальной необходимости применения преимуществ которые даёт InnoDB в виде, скажем, транзакционности, журналирования или роу-локинг.

За сим откланиваюсь. Спокойной ночи. :)

Всего: 302