Открытый блог [текущая версия 1.9.1] Скачать | ||
Навигация
Видеонаблюдение OpenBlog EEE-PC Linux PHP JavaScript C++ CoDeSys Заработок Юмор Разное Я Карта сайта Гостевая |
База данных MySQL c 1 миллиардом (1000000000) записей (mysql 1 billion rows)Для создания такой гигантской базы данных нам потребуется:1) Свободный компьютер с установленными на него Apache+PHP+MySQL+phpMyAdmin я использовал XAMPP for Linux система lubuntu 11.04 2) >50 гигабайт свободного места 3) 24 часа времени на заполнение базы данных. Создадим простейшую таблицу: SQL CREATE TABLE IF NOT EXISTS `tbl` (`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL, `value` double NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; Для заполнения базы данных напишем на PHP простейший скрипт: ![]() PHP <?set_time_limit(0); ini_set('max_execution_time',0); define ("MYSQL_HOST" ,'192.168.1.37'); define ("MYSQL_LOGIN" ,'db-login'); define ("MYSQL_PASSWORD",'db-password'); define ("MYSQL_DATABASE",'big'); @mysql_connect(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD) or die("Connect SQL error!"); @mysql_select_db(MYSQL_DATABASE) or die("Select DB error!"); while(true) { $pkt=''; for ($a=0; $a<1000; $a++) { $value=rand(0,32000); $pkt.= '(NULL,NOW(),'.$value.'), '; } $value=rand(0,32000); $sql = "INSERT INTO `tbl` VALUES ".$pkt." (NULL,NOW(),".$value.");"; $result = mysql_query($sql); } ?> Запускаем этот скрипт и переодически проверяем в phpMyAdmin количество записей в таблице. Вот что в результате у нас должно получится: Теперь главный вопрос - зачем это нужно? ![]() ![]() ![]() прежде всего мне хотелось проверить скорость работы нынче модного фейка MySQL бесплатной базы данных MariaDB но не имея опорных данных для теста (и ещё MariaDB у меня почему то не захотела ставится, в конце инсталляции постоянно возникали ошибки с правами доступа) выбор пал на MySQL С первого взгляда понятно что база не оптимальна и убога, запрос вида SQL SELECT count(*) FROM `tbl` WHERE 1P.S. также не стоит забывать что тормознутось запросов вызвана и очень малым количеством оперативной памяти всего 2 гигабайта., и логично предположить что если вся база а это чуть более 50 гигабайт была бы загружена в память и ENGINE=Memory то скорость возросла бы 10 раз. Это можно было бы проверить с помощью MySQL Benchmark Suite но мне некогда этим заниматься.
|
|