Вопрос по нагрузке на mysql и оптимизации.

12 3
adrin02
На сайте с 12.04.2006
Offline
85
1525

Здравствуйте!

Заинтересовал вопрос по базе данных.

Например если я храню в базе данных числа не больше 9 при этом таблица такая - int(11)

От этого сильно будет зависеть нагрузка для сервера?

Просто все такие таблицы что можно хранить как int(1) идут под int(11).

Кто нибудь связывался? Стоит изменять таблицы или разницы никакой?

adrin02 добавил 08.09.2010 в 00:02

Так же и varchar(255) где можно varchar(15)

Хостинг изображений (http://likepic.net) SpeedTest (http://speed-tester.info)
firefox19
На сайте с 05.11.2009
Offline
34
#1

естественно лучше оптимизировать когда можно это сделать.

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
A
На сайте с 21.08.2007
Offline
31
#2

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

firefox19:
естественно лучше оптимизировать когда можно это сделать.

предыдущий оратор прав

Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
B
На сайте с 11.12.2009
Offline
116
#3

поправьте если ошибаюсь, но для оптимизации можно еще и в индекс выставить. тогда поиск будет быстрее.

[Удален]
#4

а что мешает просто сделать, тем более это очень просто. п

D5
На сайте с 01.06.2004
Offline
51
#5

int(1) отличается от int(11) только форматом вывода, например, консольной командой mysql. Для хранения они оба занимают 4 байта.

Если у Вас всего 9 значений, то лучше использовать tinyint или enum.

По скорости разница может быть заметна только на очень больших таблицах и большом кол-ве запросов, т.к в теории базе данных надо читать больше блоков с диска для обработки запроса и объем занимаемой памяти тоже растет, что может несколько отрицательно сказаться на кешировании.

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

Программирование сайтов (http://lindir.ru)
[Удален]
#6
dk547:
А вообще стоит оптимизировать только тогда, когда реально тормозит.

тогда может быть поздно :)

adrin02
На сайте с 12.04.2006
Offline
85
#7
Stello:
тогда может быть поздно :)

Ага, может быть и такое.

Всем спасибо за ответы.

А какую посещаемость может выдержать такой vds сервер Процессор/CPU:1500 Mhz RAM: 1 Гб

Хотяб примерно =) кто в курсе?

[Удален]
#8
adrin02:
А какую посещаемость может выдержать такой vds сервер Процессор/CPU:1500 Mhz RAM: 1 Гб
Хотяб примерно =) кто в курсе?

ха ха ха ....

100 посетителей в секунду, при условии что это обычная хтмл страничка без картинок, жавас скриптов и стилей в отдельном файле :)

D5
На сайте с 01.06.2004
Offline
51
#9
adrin02:

А какую посещаемость может выдержать такой vds сервер Процессор/CPU:1500 Mhz RAM: 1 Гб
Хотяб примерно =) кто в курсе?

Все зависит от проекта. Если стоит криво настроенный апач с каким-нибудь тяжелым движком с 500 запросами к БД на страницу, то и 0.1 запросов в секунду может не потянуть :)

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

adrin02
На сайте с 12.04.2006
Offline
85
#10

dk547 Cпасибо.

Ещё вопрос по поводу составления запросов. На пару проектов поднялась посещаемость, начали подгруживать мускл. Движки самописанные, только начинал изучать php.

Вот был старый запросы

$result_news_cat = mysql_query("SELECT * FROM categories WHERE id='{$myrow_news["cat"]}' ORDER BY id DESC",$db);

$myrow_news_cat = mysql_fetch_array($result_news_cat);

$result_vsegocom = mysql_query("SELECT COUNT(*) FROM comments WHERE news='{$myrow_news["id"]}' ");
$count_vsegocom = mysql_fetch_array($result_vsegocom);

теперь переписал в другой 1 запрос


SELECT cat.id, cat.translit, cat.title, com.id fid, com.news, COUNT(com.news) contr
FROM categories cat, comments com
WHERE cat.id = '{$myrow_news["id"]}' and com.news = '{$myrow_news["cat"]}'

Может кто то поможет составить этот запрос через

JOIN слышал что так будет лучше. Но пока не получается составить, что то делаю не так. =)

Так же возможно вместо COUNT(com.news) лучше использовать COUNT(*)
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий