- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, Уважаемые специалисты!
Помогите пожалуйста разобраться и найти пусть в следующем вопросе:
Есть например таблица почти в миллион строк:
table sms (myisam)
id int
people_in int (связь на табличку с юзерами)
people_out int (связь на табличку с юзерами)
tema char (50)
core text
dt datetime
в которой содержаться сообщения от пользователей (от кого и кому).. в пике при частых insert новых строк и удалении прочитанных, происходят задержка в чтении..
Как грамотно организовать дальнейшую разработку и масштабируемость, если мне как раз и необходимо читать из неё то что было добавлено.. Ведь кол-во insert будеn расти и она будет падать.. Перевод на транзакции? Но это размер будет расти, а для того чтобы достать одну свежую последнюю запись нужно будет смотреть по всей таблице! Не вариант, разбить на партишены? Да можно, но это тоже временный выход..
Каким образом это например делает на крупных проектах, если база на одном сервере и если база на двух и более?
Второй вопрос:
Есть табличка people
id int
name char(40)
last_time (время в секундах от 1970)
в поле last_time делает update текущего времени при заходе пользователя на половине страниц.
Табличка участвует практически в каждых запросах на сайте (отобразить сообщения, статьи, дневники и прочее), чтобы было видно этот участник в сети или нет. Соответственно при высокой нагрузке updatов больше и происходит lock по селекту.. Какой здесь путь масштабируемости? Где хранить данные о посещении и как и как их использовать в частых запросах?
Поделитесь пожалуйста опытом, а то я только начинаю, и уже уткнулся в стопор..
Заранее благодарен!
Каким образом это например делает на крупных проектах, если база на одном сервере и если база на двух и более?
1. переходят с мускула на что-то серьезней, тот-же MsSql....
2. Есть понятие кластерные сервера...
3. Можно искать умные решения.. например.. делать базу, где хранится только актуальная информация, допустим за последние неделю/сутки/час, в конце дня ее переливать в общую, аля архив...
Если задача именно в инсертах, а не апдейтах, то после слияния баз, делается предварительный расчет всего и создается результат.
Второй вопрос:
тут вообще бред
знание пыха и мускулу на дает знаний в программировании. Понимаете?
Зачем так насиловать базу? Для этого есть сессии. А когда она заканчивается - информация один раз вписывается в базу...
T.R.O.N добавил 12.02.2010 в 12:38
Поделитесь пожалуйста опытом, а то я только начинаю, и уже уткнулся в стопор..
потому что начали изучать программирование не с информационных технологий а с языка
Добрый день, Уважаемые специалисты!
Помогите пожалуйста разобраться и найти пусть в следующем вопросе:
Есть например таблица почти в миллион строк:
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.
Второй вопрос:
Есть табличка people
id int
name char(40)
last_time (время в секундах от 1970)
в поле last_time делает update текущего времени при заходе пользователя на половине страниц.
Табличка участвует практически в каждых запросах на сайте (отобразить сообщения, статьи, дневники и прочее), чтобы было видно этот участник в сети или нет. Соответственно при высокой нагрузке updatов больше и происходит lock по селекту.. Какой здесь путь масштабируемости? Где хранить данные о посещении и как и как их использовать в частых запросах?
Поделитесь пожалуйста опытом, а то я только начинаю, и уже уткнулся в стопор..
Заранее благодарен!
Грамотно это делается через memcached. Заводится шаред массив с активными сессиями пользователей. Дальше начинаются вариации в зависимости от постановки задачи.
Santyago добавил 12.02.2010 в 12:57
1. переходят с мускула на что-то серьезней, тот-же MsSql....
2. Есть понятие кластерные сервера...
3. Можно искать умные решения.. например.. делать базу, где хранится только актуальная информация, допустим за последние неделю/сутки/час, в конце дня ее переливать в общую, аля архив...
Если задача именно в инсертах, а не апдейтах, то после слияния баз, делается предварительный расчет всего и создается результат.
А ещё, говорят, бывают велосипеды с квадратными колёсами...
тут вообще бред
знание пыха и мускулу на дает знаний в программировании. Понимаете?
Зачем так насиловать базу? Для этого есть сессии. А когда она заканчивается - информация один раз вписывается в базу...
T.R.O.N добавил 12.02.2010 в 12:38
потому что начали изучать программирование не с информационных технологий а с языка
как мне из папки темп где сессии ловить время окончания? Ведь пользователи не всегда жмут на кнопку выход чтобы, отменить это в базе.. Как мне узнать что сессия замолчала и нужно такому-то юзеру отметить флаг offline?
здесь непонятно. неужели нельзя индекс добавить ?
1. а есть ли смысл часто удалять ? иногда выгоднее вставлять пометку об удалении в отдельную таблицу и потом объединять. Удаление же сделать периодической задачей.
Попробуйте переписать запросы вывода на union основной таблицы myisam и небольшой буферной innodb.
Это комбинирует преимущества "легкой" вставки в innodb и выгодного компактного хранилища myisam.
Кроме того, запросы на вывод сообщений вероятно используют временный файл, это можно обойти подзапросами не сортируя поля типа text, но выбирая их в самом конце.
2. очевидно, нужно периодически подчищать сессии. в mysql 5.1 появилось что-то типа cron. может вам понравится.
И вместо memcache попробуйте для начала engine=memory. Функции те же, производительность почти та же, но sql-интерфейс вам уже знаком.
как мне из папки темп где сессии ловить время окончания
а причем тут папка? Данные сессии просто исчезнут, когда сессия заканчивается... (если кривые руки не изменят настройки)
как делать именно на пыхе, никогда не интересовался.. об окончании сессии возникает событие сервера. Для IIS это Session_OnEnd.... об аппачи - читайте
Грамотно это делается через memcached. Заводится шаред массив с активными сессиями пользователей
и сервак ложиться по переполнению памяти... оченнь круглые колеса
а причем тут папка? Данные сессии просто исчезнут, когда сессия заканчивается... (если кривые руки не изменят настройки)
как делать именно на пыхе, никогда не интересовался.. об окончании сессии возникает событие сервера. Для IIS это Session_OnEnd.... об аппачи - читайте
При чём тут Апач? Сессии организовываются движком PHP. Никаких событий на эту тему этот движок не генерирует. Перед тем как посоветовать очередную глупость, неплохо было бы хоть чуть-чуть в теме разбираться.
и сервак ложиться по переполнению памяти... оченнь круглые колеса
Ничего личного, но это очередная глупость.
Ничего личного, но это очередная глупость.
Ваша, дорогой человек
При чём тут Апач? Сессии организовываются движком PHP. Никаких событий на эту тему этот движок не генерирует.
я поэтому и сказал, что пыхом не знаимаюсь... Аппач имеет свои сессии, как почти и любой иной веб сервер (иначе оно просто захлебнется)..
Даже у старенького перла была библиотека для работы с ними Apache::Session
А то что пых стал движком... это супер. Ждите, бирман придет.. он такое любит
Ну если на сайте миллионы сессий одновременно, то может и ляжет, а так глупость.
Apache::Session не работает с сессиями apache. Это просто удобное хранилище сессий созданное в основном для mod_perl, причем ему требуется какой-то механизм хранения данных сессии на выбор.
Ваша, дорогой человек
Утверждение о том, что "сервак ложиться по переполнению памяти" из-за использования memcached - это полная некомпетентность и "сказать абы что сказать".
я поэтому и сказал, что пыхом не знаимаюсь... Аппач имеет свои сессии, как почти и любой иной веб сервер (иначе оно просто захлебнется)..
Даже у старенького перла была библиотека для работы с ними Apache::Session
Феерическая некомпетентность. Не позортесь, молодой человек.
А то что пых стал движком... это супер. Ждите, бирман придет.. он такое любит
Вам знакомо устоявшееся в узких кругах выражение "PHP engine"? Ну, да... Вы же не "пыхом не занимаетесь"... Тогда может хватить позориться или очень хочется поспорить?
<удалено, так как все уже высказались об этом>