Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > MySQL - 1 миллион записей


Автор: Nikitozz 18.6.2008, 07:47
Парни, такая беда, планируется создасть сервер для хранения фоток (около одного миллиона штук). Фотки будут храниться в директориях (не в БД), в БД будут лежать ссылки на фотки и некоторая информация. В связи с огромным количеством файлов возникает вопрос насколько сильно это тормознет сервер(?) и как сделать это максимально удобно? В принцепи у меня в голове крутится такое решенеи: разбить базу на несколько частей... Вот только не знаю на сколько... Скажите сколько MySQL может хранить в себе не вызывая особой нагрузки на сервер при запросе? И вообще как лучше реализовать такую задачу?

Автор: Feldmarschall 18.6.2008, 08:45
БД может хранить и больше миллиона записей.

Автор: Kesh 18.6.2008, 09:46
У нас база была и на 7.000.000+ записей... Если правильно спроектировать и проставить индексы - все нормально... Правда еще очень много зависит от самого запроса...

Автор: Nikitozz 18.6.2008, 10:00
Нифига себе, я думал все намного хуже. Это обнадеживает. Спасибо

Автор: IZ@TOP 18.6.2008, 12:49
Nikitozz, существует множество подходов. Поищите в гугле по ключевым словам high-load, flickr architecture.

P.S. Ребят, 1 млн записей - это просто смешно. Понимаю, сказали бы 100 млн - вот это, другое дело.

Автор: Feldmarschall 18.6.2008, 13:26
IZ@TOP, у него нет миллиона картинок. у него только планируется миллион картинок. 
А это две очень большие разницы.

Автор: IZ@TOP 18.6.2008, 13:58
Feldmarschall, а когда у тебя через год появляется 10 млн картинок, ты уже начинаешь задумываться о том, что какой был дурак и не задумался над грамотной и масштабируемой реализацией с самого начала smile

Автор: gta4kv 18.6.2008, 14:57
IZ@TOP, я уверен что у него тыща наберется с трудом smile

Автор: IZ@TOP 18.6.2008, 15:19
gta4kv, smile Это уже вопрос второй smile Да что такие все вредные? Может у него чего хорошее выйдет, зачем заранее человека обрекать на неудачу?

Автор: Nikitozz 18.6.2008, 16:20
Цитата

IZ@TOP, я уверен что у него тыща наберется с трудом smile


 smile  smile  smile 


Цитата

Feldmarschall, а когда у тебя через год появляется 10 млн картинок, ты уже начинаешь задумываться о том, что какой был дурак и не задумался над грамотной и масштабируемой реализацией с самого начала 


 smile  smile 

Цитата

gta4kv,  Это уже вопрос второй  Да что такие все вредные? Может у него чего хорошее выйдет, зачем заранее человека обрекать на неудачу?


он никак не способен меня на что-то обречь  smile 
а так, что получится, то получится

Кстати gta4kv, я решил задачу по поводу обработки фотографий  smile полностью все автоматически и только средствами РНР  smile , чуть голову не сломал  smile , но все-таки сделал

Автор: ramen 18.6.2008, 16:34
Сейчас конечно трудновато раскрутить сервис по хостингу картинок, покрайней мерии он должен быть функциональным и не уступать лидерам, тем которые сейчас на рынке этого, такие как радикал и айпиктур, сейчас уже все сайты рекомендуют эти хосты, а следовательно необходимо заручится поддержкой некоторых крупных из них, чтоб больше народа узнало о новом сервисе и начали строить паутину. Сейчас для своего основного сайта делаю сервис http://pokazal.ru больших планов нет, т.к. трезво смотрю на ту ситуацию которая сейчас с "магнатома" этого рынка.

Автор: MoLeX 19.6.2008, 06:31

M
MoLeX
Модератор: многое удалил - один трёп, а по теме null


Добавлено через 1 минуту и 42 секунды
да, поправтье если я ошибаюсь, но MySQL по сути безразницы ско-ко у тебя записей 10.000 или 100.000.000, скорость будет зависить от веса данных и 

Цитата(Kesh @  18.6.2008,  09:46 Найти цитируемый пост)
Если правильно спроектировать и проставить индексы - все нормально...

Автор: Nikitozz 20.6.2008, 09:35
И вот истина где-то рядом.. Я решил не годать что будет если много записей, а сделать их и посмотреть, написал такое вот:

Код

<?php
//Подключаемся к базе данных
require "_system/_config_moduls/connect.database.php";
print("
<html>
<head>
</head>
<body onload=\"setTimeout('window.location.reload()', 35000)\">
</body>
</html>
");

$result = mysql_query("SELECT id FROM pictures ORDER BY id DESC LIMIT 1", $link);
while($row = mysql_fetch_object($result))
{
    $value = $row->id + 2;
}

for($i=$value; $i<5000000; $i++)
{
    mysql_query("INSERT INTO `pictures`(`id`, `name_pic`, `coment`, `hide`, `eighteen`, `rating`) VALUES('$i', 'photname$i', 'комментарий $i', '0', '0', '0')", $link);
}
?>


В результате сегодня когда проснулся у меня в базе было около 5-ти млн записей, написал обычный запрос, такого типа:

Код

SELECT * FROM `pictures` WHERE `id`='3094328'


результат меня порадовал, скорость не изменилась

сделать так, как будто несколько строк принадлежат одному id не получается т.к. id - это индекс. 
надо сделать так чтобы один запрос выбирал данные из разных мест, например строку с id=293047, id=1028394, id=3639430 и т.д. около 10 строк, посмотрим как это повлияет на скорость, о результатах напишу... smile 

выполнил. скорость не миняется... опыт считаю завершенным  smile 

Автор: IZ@TOP 21.6.2008, 17:39
Цитата(Nikitozz @  20.6.2008,  10:35 Найти цитируемый пост)
надо сделать так чтобы один запрос выбирал данные из разных мест, например строку с id=293047, id=1028394, id=3639430 и т.д. около 10 строк,

Эмм... а зачем?

И еще: попробуйте такой запрос:

Код

SELECT * FROM pictures ORDER BY id DESC LIMIT 4999000, 10;

Автор: Nikitozz 23.6.2008, 23:47
Цитата

Эмм... а зачем?


чисто ради любопытства, не более того

Автор: capitan 26.6.2008, 19:00
Nikitozz,  А может все таки на PostgreSQL базу делать? Неизвестно какая структура будет и какие будут запросы. Я про JOIN и UNION например. PostgreSQL  намного шустрее работает.

Автор: Feldmarschall 26.6.2008, 19:22
capitan, я думаю, стоит воздержаться от заявлений, основанных не на знаниях или опыте, а на непроверенных слухах.

Автор: slaw 27.6.2008, 10:01
MoLeX, я ошибаюсь, возможно, но у MySQL вроде есть ограничение по количеству записей? о_0

Автор: skyboy 27.6.2008, 10:14
slaw, для 5 версии указано максимальный размер таблицы и максимальный размер записи. ограничения на количество записей не нашел. покажи, а?

Автор: capitan 27.6.2008, 12:26
Feldmarschall,  Слушай, ты самый опытный что ли, великий Гуру? Кто тебе дал право ставить под сомнения знания других. За собой лучше посмотри. Кроме болтовни от тебя ничего нет ни в одном твоем сообщении, одни слова. Я говорю то что знаю, и исходя из своего опыта. Благо он у меня богатый. И знаю как работает мускул и посгресс и в чем разница. Давай советы по существу, а не разводи флуд.

Автор: Feldmarschall 27.6.2008, 12:34
К сожалению, такому субъективному "опыту" доверять нельзя. 
На этом форуме множество тем, когда мускуль ложится под мизерной нагрузки из-за кривых запросов. Тоже ведь чей-то "опыт". 
Факты нам говорят обратное. На тысячах высоконагруженных проектов стоит мускуль. Прекрасно работает. Как в распределенных конфигурациях, так и на стандалон или шаред вариантах. 
Поэтому заявлять, что такая-то база де быстрее другой - непрофессионально. 

Автор: MoLeX 28.6.2008, 07:36
Цитата(skyboy @  27.6.2008,  10:14 Найти цитируемый пост)
ограничения на количество записей не нашел. покажи, а? 

 smile 


M
MoLeX


capitan, Feldmarschall, успакаиваемся, отношения выясняем в личке


Автор: slaw 28.6.2008, 09:09
Цитата(skyboy @  27.6.2008,  10:14 Найти цитируемый пост)
для 5 версии указано максимальный размер таблицы и максимальный размер записи

просто перепутал.. я с MySQL почти не работаю... но именно по указанной причине в свое время огранизация приобела Oracle ...

skyboy, спасибо. что освежил в памяти информацию на этот счет ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)