С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6

Оптимизация работы с БД

09.03.2013, 16:57. Показов 2451. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошло 5 недель, как я перешёл на веб-разработку. У меня много вопросов касающихся оптимизации. Самый главный вопрос, который сейчас меня волнует, это оптимизация работы с бд.
Имеется база данных, в которой существует две таблицы: "новости" и "комментарии к новостям". При переходе на главную страницу, в БД посылается запрос на считывание данных и вывод информации, т.е. новостей или комментарий с новостью. Хорошо. Всё работает, но я то пока на сайте один А что если таких запросов будет 1000 за 1 минуту? Да БД будет постоянно отваливаться! Нужно как-то свести к минимуму обращения к БД.
Что я думаю по этому поводу:
Нужно создать две таблицы. В одну из них будет загружена таблица с новостями, а в другую с комментариями. При переходе на страницу с новостями или на страницу с новостью и комментариями, запрос будет выполнен к этой таблице, а не к БД. Таблицу с новостями, можно будет обновлять по необходимости, т.е. появилась новая новость - подгрузили её в таблицу. А таблицу с комментариями обновлять раз в сутки! Т.е. если был добавлен комментарий, то мы его загружаем не в БД, а потом считываем данные в таблицу; мы добавлям запись к таблице, а потом, например в конце дня автоматически запускается скрипт и обновляет БД из этой таблицы. Или даже можно сделать две таблицы: с новыми комментариями и старыми, чтоб лишние действия не делать в поиске свежих комментариев.

Так вот. Правильны ли мои мысли? Как оно вообще по сути делается правильно? Подкиньте источников или название книги какой-нибудь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2013, 16:57
Ответы с готовыми решениями:

Загрузка данных, оптимизация алгоритма для работы с сервером
В таблице хранится примерно 240 000 записей, запрос выполняется где-то за 0.0010 секунд. Использую PDO-объект для подключения к БД, для...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Оптимизация работы
Есть большой файл с множеством формул массива, работа с ним довольно затруднительно. Вопрос такой, если ввести дополнительное условие...

23
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
10.03.2013, 19:19  [ТС]
АП
0
 Аватар для t1m0n
638 / 416 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
10.03.2013, 19:46
вообще еще есть кеширование, страница которая не меняется кешируется в озу или в папке на винчестере и отдается нгиксом
про индексы не забыли?
еще есть быстрые базы данных memcached, redis
Цитата Сообщение от BuPy7 Посмотреть сообщение
А таблицу с комментариями обновлять раз в сутки!
это долго очень
1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
10.03.2013, 19:48  [ТС]
Цитата Сообщение от t1m0n Посмотреть сообщение
это долго очень
Там наверно я хотел написать базу данных из таблицы.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
10.03.2013, 20:43
А что если таких запросов будет 1000 за 1 минуту? Да БД будет постоянно отваливаться!
а что буде если НЛО сядет?
При переходе на страницу с новостями или на страницу с новостью и комментариями, запрос будет выполнен к этой таблице, а не к БД
ты сам понял, что написал?
Правильны ли мои мысли? Как оно вообще по сути делается правильно?
Я ничего не понял что ты написал. Вообще.

Есть мем кеш, результаты запросов можно хранить в нем. Но изначально вопрос стоит по-идиотски - "а что будет если.." Вот когда у тебя будет 1000 запросов в минуту - тогда и можно будет говорить о чем-либо. Сейчас разговор бессмыслен.

Добавлено через 1 минуту
ну и http://phpclub.ru/mysql/doc/mysql-indexes.html
1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
10.03.2013, 21:02  [ТС]
Цитата Сообщение от Василий Макогон Посмотреть сообщение
http://phpclub.ru/mysql/doc/mysql-indexes.html
Ничего нового не узнал.

Цитата Сообщение от Василий Макогон Посмотреть сообщение
а что буде если НЛО сядет?
Хороший программист думает заранее о том, что может произойти с его программой и предотвращает это.


Цитата Сообщение от Василий Макогон Посмотреть сообщение
ты сам понял, что написал?
По крайне мере да.

Цитата Сообщение от Василий Макогон Посмотреть сообщение
Есть мем кеш, результаты запросов можно хранить в нем.
Вы второй человек кто мне это предлагает. Значит будем использовать.


Цитата Сообщение от Василий Макогон Посмотреть сообщение
Но изначально вопрос стоит по-идиотски - "а что будет если.." Вот когда у тебя будет 1000 запросов в минуту - тогда и можно будет говорить о чем-либо. Сейчас разговор бессмыслен.
Если у вас богатый опыт в программировании, то вот после таких утверждений вы просто в грязь лицом упали.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
10.03.2013, 23:30
Цитата Сообщение от BuPy7 Посмотреть сообщение
Ничего нового не узнал.
Покажите ваши запросы на создание таблиц.

Цитата Сообщение от BuPy7 Посмотреть сообщение
Хороший программист думает заранее о том, что может произойти с его программой и предотвращает это.
Хороший программист знает, что если в секунду у него 1000 открытий страниц, то нужно пользоваться не хостингом, а чем то посерьезней. А там 1000 не отвалиться

Цитата Сообщение от BuPy7 Посмотреть сообщение
Если у вас богатый опыт в программировании, то вот после таких утверждений вы просто в грязь лицом упали.
Боюсь что нет. Вам правильно написали, сначала добейтесь такой посещаемости, а там увидите что дело не только в бд, а будет всех ресурсов не хватать, даже интернет канала.

Цитата Сообщение от BuPy7 Посмотреть сообщение
запрос будет выполнен к этой таблице, а не к БД
Цитата Сообщение от BuPy7 Посмотреть сообщение
А таблицу с комментариями обновлять раз в сутки!
Цитата Сообщение от BuPy7 Посмотреть сообщение
Т.е. если был добавлен комментарий, то мы его загружаем не в БД, а потом считываем данные в таблицу; мы добавлям запись к таблице, а потом, например в конце дня автоматически запускается скрипт и обновляет БД из этой таблицы.
Вы вообще не понимаете что такое БД и что такое таблица?

Цитата Сообщение от BuPy7 Посмотреть сообщение
Или даже можно сделать две таблицы: с новыми комментариями и старыми, чтоб лишние действия не делать в поиске свежих комментариев.
Почему не 5? Это вообще к чему?
1
10.03.2013, 23:36

Не по теме:

Цитата Сообщение от BuPy7 Посмотреть сообщение
запросов будет 1000 за 1 минуту?
пфф.. 4800 запросов в минуту с каждого

0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.03.2013, 00:44
Значит будем использовать
http://yandex.ru/yandsearch?te... 648&lr=213
0
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
11.03.2013, 12:58  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Покажите ваши запросы на создание таблиц.
PHP
1
$sql = "SELECT dateCreate, caption, fullTextNews " . "FROM news WHERE ID LIKE " . (int)$id;
Плохой запрос?

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Вы вообще не понимаете что такое БД и что такое таблица?
Я имел ввиду не ту таблицу, которая в БД, а внешняя. Отделённая от БД.

Добавлено через 12 минут

Не по теме:

Где срачь? Никого нет.

0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
11.03.2013, 13:06
Цитата Сообщение от BuPy7 Посмотреть сообщение
Плохой запрос?
как сказать. сам запрос ~ нормальный. Использование двойных кавычек без надобности - минус. Присваивание переменной без надобности - минус. Использование конкатенации без надобности - минус. К тому же, насколько я понимаю, здесь LIKE не нужно, т.к. процентов все равно не видно. Да и навряд ли вообще здесь нужно использовать LIKE даже по логике. И все зависит также от того, что вы потом с ним делаете.

Не по теме:

А вообще, показать одну строчку - все равно что показать руль от машины и сказать "Скажи, как тебе машина?" :D

1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
11.03.2013, 13:15  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
Использование двойных кавычек без надобности - минус
А какие использовать? Одинарные?

Цитата Сообщение от KOPOJI Посмотреть сообщение
Присваивание переменной без надобности - минус.
Я переменную потом могу и освободить. Если сразу запрос вписать в mysqli_query, то это какой-то онанизм.

Цитата Сообщение от KOPOJI Посмотреть сообщение
Использование конкатенации без надобности - минус
В коде возврат каретки есть. Я просто скопировал строку запроса и всё.

Цитата Сообщение от KOPOJI Посмотреть сообщение
К тому же, насколько я понимаю, здесь LIKE не нужно
Почему-то до этого момента я думал, что его можно использовать и вместо "=". Исправимся.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
11.03.2013, 13:18
Цитата Сообщение от BuPy7 Посмотреть сообщение
А какие использовать? Одинарные?
в двойных кавычках пых ищет переменные, соответственно, код выполняется дольше. Но к оптимизации именно БД это не относится.
Цитата Сообщение от BuPy7 Посмотреть сообщение
Я переменную потом могу и освободить. Если сразу запрос вписать в mysqli_query, то это какой-то онанизм.
а на мой взгляд, как раз наоборот, для текста мелкого запроса создавать переменную является данным действием.
Цитата Сообщение от BuPy7 Посмотреть сообщение
В коде возврат каретки есть. Я просто скопировал строку запроса и всё.
Тоже самое что и выше. Разделять мелкий запрос на несколько строк имхо лишнее.
Цитата Сообщение от BuPy7 Посмотреть сообщение
Почему-то до этого момента я думал, что его можно использовать и вместо "=". Исправимся.
Можно. Но не нужно
1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
11.03.2013, 13:24  [ТС]
KOPOJI, я заметил, что PHP понимает индекс в ассоциативном массиве, как с кавычками, так и без. Дак как правильно?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
11.03.2013, 13:30
а вы включите вывод ошибок E_NOTICE, сразу поймете Чтение несуществующей переменной
При обращении без кавычек пых сначала пытается найти константу с таким именем, а уже только потом смотрит как на индекс, подставляя кавычки
1
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.03.2013, 13:48
Цитата Сообщение от BuPy7 Посмотреть сообщение
Плохой запрос?
Это вообще не запрос на создание таблицы
Покажите структуру таблицы.

Ну а по поводу плохости запроса, главный минут тут не в кавычках двойных или одинарных, сокрость очень не значительна. Главный минус в том тчо имена полей и название таблиц вы не заключаете в `обратные апострофы`.
Обзовёте поле или таблицу служебным словом, ну например count, захотите выбрать поле
SQL
1
SELECT COUNT FROM TABLE
и будет вам ошибка синтаксиса запроса и запрос не выполнится, или выполнится, по этому всегда нужно заключать имена в обратные апострофы а текст в кавычки или апострофы.
SQL
1
SELECT `count` FROM `table`
выполнится
1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
11.03.2013, 13:52  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Это вообще не запрос на создание таблицы
Да. Извиняюсь.
SQL
1
2
3
4
5
6
7
8
CREATE TABLE `commentsNews` (
  `ID` INT(11) NOT NULL AUTO_INCREMENT,
  `idNews` INT(11) DEFAULT NULL,
  `dateCreate` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `nick` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `comment` text COLLATE utf8_unicode_ci,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.03.2013, 14:04
зачем тут like?

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
Присваивание переменной без надобности - минус
совсем не минус. это нормальная практика, ТС прав, что писать большой запрос в query() это изврат. К тому же всегда можно для отладки посмотреть содержимое запроса.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
11.03.2013, 14:05
Василий Макогон,
Цитата Сообщение от KOPOJI Посмотреть сообщение
а на мой взгляд, как раз наоборот, для текста мелкого запроса создавать переменную является данным действием.
0
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
11.03.2013, 14:31  [ТС]
Я сайт создаю на хостинге hostinger, там раз в сутки база данных сама отваливается. =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2013, 14:31
Помогаю со студенческими работами здесь

Оптимизация работы с ТЗ
Есть две ТЗ Они, можно сказать, связаны один-к-многим При формировании печатной формы идет перебор строк ТЗ1 и для каждой ее строки...

Оптимизация Работы С Тз
Есть две ТЗ с одинаковыми колонками: Товар, Цена, День, НачО, КонО, Приход, Расход Если в ТЗ1 и в ТЗ2 есть строки с совпадающими...

Оптимизация работы с изображениями
Написал простенькое приложения с фильтрами для фото используя WriteableBitmapEx. Изображения храню просто в WriteableBitmap, а все...

Оптимизация работы Windows 8 ?
Господа , как Оптимально настроить Windows 8 ? спасибо .

Оптимизация работы класса
Написал класс который оперирует с числами в разных СС. Укажите на недостатки, на то что можно сделать получше, что можно добавить. Код:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru