|
|
|
| Какие есть быстрые базы данных? Быстрые, легкие, невесомые.
Дело в том, что мне нужно хранить табличку gеoip в базе, но в mysql - не получается. При средней нагрузке - сервер mysql ложится через несколько часов. Мне ничего сверх-сложного не нужно, не нужно никаких транзакций и лоченья таблиц... просто очень быстрые select и отсутствие проблем с подсоединением к этой базе. Табличка будет всего одна... | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 05:14)
| | Весом в 250 мб ? | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 09:49)
| | Что? Данные? Нет, весом в один-два мб... | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 12:41)
| | А какая нагрузка?
У меня эта geoip база (тоже около 4 метров) очень шустро работает при около 200000 хитов в сутки. | |
|
|
|
|
|
|
|
для: Axxil
(24.06.2006 в 12:49)
| | Это немножко мало... | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 05:14)
| | А где можно добыть базу geoip? | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 05:14)
| | Если она всеит два мб, тебе мало MySQL
Да и потом она считает кажется самой быстрой,
просто таблицы надо создавать не MyISAM a INNODB
Будет быстрей.. | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 12:59)
| | InnoDB в несколько раз медленее MyISAM, правда надёжнее... В MySQL самыми быстрыми (и не надёжными) считаются таблицы MyISAM (если только, конечно не принимать во внимание таблицы MEMORY, которые располагаются в оперативной памяти. Кстати, для geoip - это тоже вариант - таблица-то не меняется, правда хостеры в большинстве своём запрещают использование MEMORY-таблиц). | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 05:14)
| | А под средней нагрузкой что имеется ввиду? 2 Мб - это очень маленькая таблица, даже если нарузка высокая - она практически вся в кэше должна сидеть... | |
|
|
|
|
|
|
|
для: cheops
(24.06.2006 в 13:28)
| | Около 100 одномоментных обращений. В час - 360000.
Как можно для этого использовать memory-таблицы? Они же пропадают после каждого дисконнекта от базы...
Мой хостер мне разрешит и их использовать.
Кстати, "таблица-то не меняется" - это неверно. Обновление будет. Или вы имели ввиду хаотичное изменение? Да, тогда не меняется. | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 19:55)
| | От вас я примерно такой цифры и ждал :)))
1) приведите скрипт, который обращается к таблице, может можно оптимизировать?
2) У вас выделенный сервер? Какие настройки у MySQL? | |
|
|
|
|
|
|
|
для: 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 ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(25.06.2006 в 01:44)
| | 2) Лучше, что в php.ini? И какие запросы преобладают? SELECT? | |
|
|
|
|
|
|
|
для: 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 и всё. | |
|
|
|
|
|
|
|
для: Shorr Kan
(25.06.2006 в 06:03)
| | Попутал, конечно же я имел ввиду my.cnf (или my.ini), а не php.ini. | |
|
|
|
|
|
|
|
для: cheops
(25.06.2006 в 10:27)
| | А там только две строчки... root-логин и root-пароль. | |
|
|
|
|
|
|
|
для: Shorr Kan
(25.06.2006 в 23:24)
| | Хм... зря, для такой нагрузки, нужно обязательно настраивать сервер MySQL. А сколько сейчас процессы MySQL занимают оперативной памяти? | |
|
|
|
|
|
|
|
для: cheops
(26.06.2006 в 10:59)
| | Виртуальной памяти - 141 Мб
Физической - 72 Мб
А что в my.cnf подсунуть можно? А то я поискал информацию - ерунда какая-то... То есть - пустые советы и подсказки по разным проблемам. Но найти именно описания возможных конфигураций в my.cnf я не нашел... не в пример php.ini
Единственное, более-менее стоящее - http://www.linuxshop.ru/lib/mysqloff/Replication_Options.html , но пользы оттуда я почерпнул не true.... | |
|
|
|
|
|
|
|
для: 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 - можно поменьше, если памяти мало. | |
|
|
|
|
|
|
|
для: cheops
(26.06.2006 в 11:53)
| | Авария у прова была - не мог выйти и проверить. Сейчас сделал. load averages при той же нагрузке - около 75 :(
Впрочем, саппорт говорит, что проблема скорее в php, а не mysql. Он грузит. Но я только лишь пишу события в файлы на ram-диск... что же сервер еще от меня хочет? | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 05:14)
| | Ещё - подскажите где брали сию таблицу?
Ну где брали geoIp | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 13:50)
| | yandex.ru :) | |
|
|
|
|
|
|
|
для: kaoz
(24.06.2006 в 15:10)
| | Я там не видел на два мб... | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 13:50)
| | http://www.maxmind.com/app/csv
и обратите внимание на нижнее how-to | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.06.2006 в 19:57)
| | Только, по-моему, я не так выразился. Проблема не в таблице. Она действительно быстро работает. Проблема в базе. Коннект к базе убивает базу. Вернее - количество коннектов. | |
|
|
|