Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Быстрая база данных
 
 автор: Shorr Kan   (24.06.2006 в 05:14)   письмо автору
 
 

Какие есть быстрые базы данных? Быстрые, легкие, невесомые.

Дело в том, что мне нужно хранить табличку gеoip в базе, но в mysql - не получается. При средней нагрузке - сервер mysql ложится через несколько часов. Мне ничего сверх-сложного не нужно, не нужно никаких транзакций и лоченья таблиц... просто очень быстрые select и отсутствие проблем с подсоединением к этой базе. Табличка будет всего одна...

   
 
 автор: valenok   (24.06.2006 в 09:49)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 05:14)
 

Весом в 250 мб ?

   
 
 автор: Shorr Kan   (24.06.2006 в 12:41)   письмо автору
 
   для: valenok   (24.06.2006 в 09:49)
 

Что? Данные? Нет, весом в один-два мб...

   
 
 автор: Axxil   (24.06.2006 в 12:49)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 12:41)
 

А какая нагрузка?
У меня эта geoip база (тоже около 4 метров) очень шустро работает при около 200000 хитов в сутки.

   
 
 автор: Shorr Kan   (24.06.2006 в 20:06)   письмо автору
 
   для: Axxil   (24.06.2006 в 12:49)
 

Это немножко мало...

   
 
 автор: tAleks   (24.06.2006 в 12:57)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 05:14)
 

А где можно добыть базу geoip?

   
 
 автор: valenok   (24.06.2006 в 12:59)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 05:14)
 

Если она всеит два мб, тебе мало MySQL
Да и потом она считает кажется самой быстрой,
просто таблицы надо создавать не MyISAM a INNODB
Будет быстрей..

   
 
 автор: cheops   (24.06.2006 в 13:27)   письмо автору
 
   для: valenok   (24.06.2006 в 12:59)
 

InnoDB в несколько раз медленее MyISAM, правда надёжнее... В MySQL самыми быстрыми (и не надёжными) считаются таблицы MyISAM (если только, конечно не принимать во внимание таблицы MEMORY, которые располагаются в оперативной памяти. Кстати, для geoip - это тоже вариант - таблица-то не меняется, правда хостеры в большинстве своём запрещают использование MEMORY-таблиц).

   
 
 автор: cheops   (24.06.2006 в 13:28)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 05:14)
 

А под средней нагрузкой что имеется ввиду? 2 Мб - это очень маленькая таблица, даже если нарузка высокая - она практически вся в кэше должна сидеть...

   
 
 автор: Shorr Kan   (24.06.2006 в 19:55)   письмо автору
 
   для: cheops   (24.06.2006 в 13:28)
 

Около 100 одномоментных обращений. В час - 360000.
Как можно для этого использовать memory-таблицы? Они же пропадают после каждого дисконнекта от базы...
Мой хостер мне разрешит и их использовать.
Кстати, "таблица-то не меняется" - это неверно. Обновление будет. Или вы имели ввиду хаотичное изменение? Да, тогда не меняется.

   
 
 автор: cheops   (24.06.2006 в 21:56)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 19:55)
 

От вас я примерно такой цифры и ждал :)))
1) приведите скрипт, который обращается к таблице, может можно оптимизировать?
2) У вас выделенный сервер? Какие настройки у MySQL?

   
 
 автор: Shorr Kan   (25.06.2006 в 01:44)   письмо автору
 
   для: cheops   (24.06.2006 в 21:56)
 

Ну что ж поделать... могу только вздохнуть :)

1) Сомнительно.


<?
mysql_connect 
("host""user""pass") or die ("slomalos'... vse-vse slomalos'...");
mysql_select_db ("dbname");

$cc=ip_country(mysql_escape_string($_GET['ip']));

## $arr[0]-код; #arr[1]-страна
function ip_country($addr) {
  
$ipnum=sprintf("%u",ip2long($addr));
  
$result=mysql_fetch_array(mysql_query("SELECT t2.cc,t2.cn FROM cc AS t2,ip AS t1 WHERE $ipnum 
  BETWEEN t1.start AND t1.end AND t2.ci=t1.ci;"
));
  if(
$result[0]==""){return false;}
  return 
$result;
}
//function
?>


Табички cc и ip сделаны по той how-to csv-to-sql(я на нее ниже ссылку дал), что на maxmind
Да и потом, проблема-то не с выборкой, а с коннектом к базе. Lost connection to MySQL...... Хотя уже max_user_connections 2800

Я хотел сделать структуру каталогов с айпи.... 123/123/123/123/file_with_country_name
Но оказалось многовато каталогов.... no inodes free :( ... а ведь тогда бы вообще не пришлось искать - сразу точки в айпи на слэшики менять и все... страна в кармане.

2) Конечно, выделенный... иначе бы хостер за мной уже пришел...
Это какие? show variables ?

   
 
 автор: cheops   (25.06.2006 в 01:55)   письмо автору
 
   для: Shorr Kan   (25.06.2006 в 01:44)
 

2) Лучше, что в php.ini? И какие запросы преобладают? SELECT?

   
 
 автор: Shorr Kan   (25.06.2006 в 06:03)   письмо автору
 
   для: cheops   (25.06.2006 в 01:55)
 

Да на этом этапе только один select - я его выше показал. То есть - запросов в базу нет.

mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

А ничего больше про mysql там нету.

p.s. Или про преобладание вы спросили - вообще про всю программу? Ну тогда... там все запросы преобладают. insert и select на первом месте, delete и update - на втором.

Но конкретно в данном случае... где сервер ложится... работает только тот пример, что я показал выше - только один select и всё.

   
 
 автор: cheops   (25.06.2006 в 10:27)   письмо автору
 
   для: Shorr Kan   (25.06.2006 в 06:03)
 

Попутал, конечно же я имел ввиду my.cnf (или my.ini), а не php.ini.

   
 
 автор: Shorr Kan   (25.06.2006 в 23:24)   письмо автору
 
   для: cheops   (25.06.2006 в 10:27)
 

А там только две строчки... root-логин и root-пароль.

   
 
 автор: cheops   (26.06.2006 в 10:59)   письмо автору
 
   для: Shorr Kan   (25.06.2006 в 23:24)
 

Хм... зря, для такой нагрузки, нужно обязательно настраивать сервер MySQL. А сколько сейчас процессы MySQL занимают оперативной памяти?

   
 
 автор: Shorr Kan   (26.06.2006 в 11:48)   письмо автору
 
   для: cheops   (26.06.2006 в 10:59)
 

Виртуальной памяти - 141 Мб
Физической - 72 Мб

А что в my.cnf подсунуть можно? А то я поискал информацию - ерунда какая-то... То есть - пустые советы и подсказки по разным проблемам. Но найти именно описания возможных конфигураций в my.cnf я не нашел... не в пример php.ini
Единственное, более-менее стоящее - http://www.linuxshop.ru/lib/mysqloff/Replication_Options.html , но пользы оттуда я почерпнул не true....

   
 
 автор: cheops   (26.06.2006 в 11:53)   письмо автору
 
   для: Shorr Kan   (26.06.2006 в 11:48)
 

Добавьте в секцию [mysqld] конфигурационного файла my.cnf следующие строки
key_buffer_size = 512M
table_cache = 512
sort_buffer_size = 8M
read_buffer_size = 8M
join_buffer_size = 8M
query_cache_size = 64M
query_cache_limit = 2M
myisam_sort_buffer_size = 64M
thread_cache = 8
tmp_table_size = 64M

key_buffer_size - можно поменьше, если памяти мало.

   
 
 автор: Shorr Kan   (30.06.2006 в 02:46)   письмо автору
 
   для: cheops   (26.06.2006 в 11:53)
 

Авария у прова была - не мог выйти и проверить. Сейчас сделал. load averages при той же нагрузке - около 75 :(
Впрочем, саппорт говорит, что проблема скорее в php, а не mysql. Он грузит. Но я только лишь пишу события в файлы на ram-диск... что же сервер еще от меня хочет?

   
 
 автор: valenok   (24.06.2006 в 13:50)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 05:14)
 

Ещё - подскажите где брали сию таблицу?
Ну где брали geoIp

   
 
 автор: kaoz   (24.06.2006 в 15:10)   письмо автору
 
   для: valenok   (24.06.2006 в 13:50)
 

yandex.ru :)

   
 
 автор: valenok   (24.06.2006 в 15:49)   письмо автору
 
   для: kaoz   (24.06.2006 в 15:10)
 

Я там не видел на два мб...

   
 
 автор: Shorr Kan   (24.06.2006 в 19:57)   письмо автору
 
   для: valenok   (24.06.2006 в 13:50)
 

http://www.maxmind.com/app/csv

и обратите внимание на нижнее how-to

   
 
 автор: Shorr Kan   (24.06.2006 в 20:10)   письмо автору
 
   для: Shorr Kan   (24.06.2006 в 19:57)
 

Только, по-моему, я не так выразился. Проблема не в таблице. Она действительно быстро работает. Проблема в базе. Коннект к базе убивает базу. Вернее - количество коннектов.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования