Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Что быстрее mysql или файл?
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 422
Пользователь №: 18633
На форуме: 7 лет, 10 месяцев, 17 дней
Карма:




Доброго времени суток)
Интересует вопрос.
Вот храню я всю информацию сайта в базе данных. хостер посоветовал, что если размер базы будет больше 1Гб, сайт может периодически "падать", мол, берите выделеный сервер.
Потому заинтересовался некою информацию хранить в файлах. Все, что нужно, выводить каждую строку одну за другой, тоесть не нужно ничего искать в файле.

Если в файл закинуть от 100 до 300 строк, по сравнению с mysql нагрузка на сервер будет больше или меньше?
И если я храню маленькие картинки в формате base64, тогда текстовый файл базы данных будет около 1-3мб. так же интересует нагрузка на сервер в таком случае будет больше или менше, по сравнению с mysql?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2333
Пользователь №: 26852
На форуме: 6 лет, 3 месяца, 10 дней
Карма: 127




savelikan
Что мешает запилить тест с мускулем и файлами?, запустить 100500 раз и посмотреть результат.
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15383
Пользователь №: 4190
На форуме: 9 лет, 4 месяца, 20 дней
Карма: 470




Цитата (savelikan @ 24.01.2017 - 22:13)
хостер посоветовал, что если размер базы будет больше 1Гб, сайт может периодически "падать",

Уходи от такого хостера, у которого БД в 1 ГБ глючит. Нефиг там делать.

Цитата (savelikan @ 24.01.2017 - 22:13)
И если я храню маленькие картинки в формате base64

А зачем их так хранить? В чем ты видишь преимущество такого формата?

Вопрос "Мускуль супротив файлов" уже многократно обсасывался тут на форуме smile.gif

Самое главное - любая БД также хранит данные в файлах. Разница с обычным набором файлов в том, что еще есть посредник, в виде собственно СУБД, который позволяет максимально эффективно это всё использовать.
Если у тебя просто "тупой" вывод инфы, безо всякого поиска, сортировки, фильтрации - то да, на файлах может получиться побыстрее.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 422
Пользователь №: 18633
На форуме: 7 лет, 10 месяцев, 17 дней
Карма:




Цитата (sergeiss @ 24.01.2017 - 21:43)
Цитата (savelikan @ 24.01.2017 - 22:13)
хостер посоветовал, что если размер базы будет больше 1Гб, сайт может периодически "падать",

Уходи от такого хостера, у которого БД в 1 ГБ глючит. Нефиг там делать.

Цитата (savelikan @ 24.01.2017 - 22:13)
И если я храню маленькие картинки в формате base64

А зачем их так хранить? В чем ты видишь преимущество такого формата?

Вопрос "Мускуль супротив файлов" уже многократно обсасывался тут на форуме smile.gif

Самое главное - любая БД также хранит данные в файлах. Разница с обычным набором файлов в том, что еще есть посредник, в виде собственно СУБД, который позволяет максимально эффективно это всё использовать.
Если у тебя просто "тупой" вывод инфы, безо всякого поиска, сортировки, фильтрации - то да, на файлах может получиться побыстрее.

Ну, по крайней мере так говорил хостер. но вот сейчас у меня около 900мб база и работает отлично. Сижу там, потому, что не дорого - почти доллар за 10Гб, 256 озу...

А храню картинки в base64 потому, что есть ограничение по количеству файлов - 200000
Да и на файловой системе картинка на 500байт будет занимать 4кб


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2789
Пользователь №: 24406
На форуме: 6 лет, 8 месяцев, 9 дней
Карма: 180




СУБД решают проблемы многопоточности и конкурентного доступа, чего не скажешь о файлах.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 422
Пользователь №: 18633
На форуме: 7 лет, 10 месяцев, 17 дней
Карма:




Цитата (T1grOK @ 25.01.2017 - 07:45)
СУБД решают проблемы многопоточности и конкурентного доступа, чего не скажешь о файлах.

При использовании fgets файл не загружается целиком в ОЗУ?
Чтобы прочитать строку до конца, нужно в качестве параметра $length написать 999999?

что указать в $handle, если мне нужно прочитать, например, только пятую строку?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2789
Пользователь №: 24406
На форуме: 6 лет, 8 месяцев, 9 дней
Карма: 180




Цитата (savelikan @ 25.01.2017 - 06:38)
При использовании fgets файл не загружается целиком в ОЗУ?

Нет, не загружается
Цитата (savelikan @ 25.01.2017 - 06:38)
Чтобы прочитать строку до конца, нужно в качестве параметра $length написать 999999?

Нет. Длину опускаем и чтение производится ровно до конца строки.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2789
Пользователь №: 24406
На форуме: 6 лет, 8 месяцев, 9 дней
Карма: 180




Цитата (savelikan @ 25.01.2017 - 06:38)
что указать в $handle, если мне нужно прочитать, например, только пятую строку?

Прочитать 4 строки, без накопления в памяти, а 5-ую вернуть как результат. Читать все равно придется лишние данные(если не реализовать дополнительных механизмов).

P.S. Плохая идея использовать файлы.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 422
Пользователь №: 18633
На форуме: 7 лет, 10 месяцев, 17 дней
Карма:




Цитата (T1grOK @ 25.01.2017 - 09:01)
Цитата (savelikan @ 25.01.2017 - 06:38)
что указать в $handle, если мне нужно прочитать, например, только пятую строку?

Прочитать 4 строки, без накопления в памяти, а 5-ую вернуть как результат. Читать все равно придется лишние данные(если не реализовать дополнительных механизмов).

P.S. Плохая идея использовать файлы.

Тоесть лучше в субд?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2789
Пользователь №: 24406
На форуме: 6 лет, 8 месяцев, 9 дней
Карма: 180




Да.
Файлы подойдут только для примитивных выборок и преимущественно однопользовательском доступе к данным.
Во всех остальных случаях предпочтительнее СУБД.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 422
Пользователь №: 18633
На форуме: 7 лет, 10 месяцев, 17 дней
Карма:




Кстате, вот результат моих тестов с файлом в 950кб и поиском в mysql размером 200мб,
время в мс файл/mysql
получить одну строку 1 раз: 2,8/11,1
получить одну строку 10 раз: 30,4/14,1
получить одну строку 100 раз: 300,5/35,8
получить одну строку 1000 раз: 2972.2/322.6

и то же на сервере с SSD
получить одну строку 1 раз: 0,8/1,3
получить одну строку 10 раз: 6,4/1,7
получить одну строку 100 раз: 51,6/5,2
получить одну строку 1000 раз: 806,4/645,5
получить одну строку 10000 раз: 16249.5/9106.7


Но! Если файл 55кб, тогда:
получить одну строку 1 раз: 0,4/11,4
получить одну строку 10 раз: 3,5/15,1
получить одну строку 100 раз: 30,1/35,8
получить одну строку 1000 раз: 302,4/345


$GLOBAL_timestart = microtime(true);
for($a=0;$a<1000;$a++){
$f=file("296.txt");
echo $f[0].'<br>';
}
echo '<br><br><br><br> выполнено ЗА: '.round((microtime(true)-$GLOBAL_timestart)*1000,1).'<br><br>';


$GLOBAL_timestart = microtime(true);
for($a=0;$a<1000;$a++){
$SQL = $mysql->query('select * from `aaa` where `id` = 50');
$TST = $mysql->fetch_array($SQL);
echo $TST['zzz'].'<br>';
}
echo '<br><br><br><br>выполнено ЗА:'.round((microtime(true)-$GLOBAL_timestart)*1000,1);


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2789
Пользователь №: 24406
На форуме: 6 лет, 8 месяцев, 9 дней
Карма: 180




Извините конечно, но это не тесты - это пародия. С таким подходом чтения файлов, вы положите сервер на лопатки по памяти.

СУБД достаточно умны, и при повторном, идентичном запросе, отдадут результат уже из кэша, так что тут тоже провал.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса