nixp.ru v3.0

23 октября 2017,
понедельник,
01:45:31 MSK

DevOps с компанией «Флант»
evolutionX написал 28 октября 2007 года в 11:43 (495 просмотров) Ведет себя неопределенно; открыл 10 тем в форуме, оставил 24 комментария на сайте.

Как оптимизировать mysql чтобы она работала с таблицами вот такой структуры (примерно)

name1 varchar(100) primary key,

name2 int(1),

name3 int(1),

name4 int(1),

name5 int(1),

name6 int(1)

Изначальное кол-во записей в таблице 700 тысяч, в процессе обработки выростит до 20 млн.

Какие опции выбирать при установке mysql под такие задачи?

// Тему переместил(а) Dmitry Shurupov из форума «UNIX FAQ: вопросы по UNIX/Linux».

Genie

s/mysql/pgsql/g

mysql очень неуютно себя чувствует на таких таблицах.

можно посмотреть на таблицу из phpmyadmin, у него есть возможность оптимизации.

Anarchist
Genie
s/mysql/pgsql/g

mysql очень неуютно себя чувствует на таких таблицах.

можно посмотреть на таблицу из phpmyadmin, у него есть возможность оптимизации.

А обосновать?

Без указания величины и характера нагрузки (а также аппаратной конфигурации) — голословно.

Как и гипотеза о превосходстве Постгреса.

ЗЫ: В своё время неплохо жил на Мускуле 4.0 и табличках до 30-35 млн. записей включительно.

Genie

ага, конечно..

настройки mysql для этого случая — в студию.

10М+ записей мускуль дапмит/импортит за десяток минут. на любом железе. ;)

итого, различные селекты, может и будут в данном случае работать быстро, но при delete/insert необходимо перестраивать индексирование, во время которого таблица будет заблокирована. много записей (в среднем случае) подразумевает много одновременных сессий. итого, будем иметь задумывания там, где вроде бы не должны иметь оные.

«голословно» — это может и для тебя так. я со всем этим сталкиваюсь по работе, а там случаи бывают разные, и железо далеко не средненькое (ну то есть (2..4)хQuad с 8-16Гб — это норма).

что касается данного случая:

mysql> create database speedtest;
Query OK, 1 row affected (0.04 sec)
mysql> create table speedtest (name1 varchar(100) primary key,name2 int(1),name3 int(1),name4 int(1),name5 int(1),name6 int(1)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> Bye
$ time perl -e '$i=0;while($i++<10000000){printf("insert into speedtest values (\"%010d%010d\",1,1,1,1,1);",$i,$i);}' > file.sql
real    0m44.636s
user    0m32.458s
sys     0m5.724s
$ time mysql -Dspeedtest < file.sql

оно ещё не отработало:

mysql> status
--------------
mysql  Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (x86_64) using readline 5.2
Connection id:          9
Current database:       speedtest
Current user:           user@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.32-Debian_7etch1-log Debian etch distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 10 hours 40 min 56 sec
Threads: 2  Questions: 2999301  Slow queries: 0  Opens: 144  Flush tables: 1  Open tables: 25  Queries per second avg: 77.993
--------------

3М записей из 10М пока я это сообщение набирал — как-то не впечатлительно, ага?

Anarchist
Genie
ага, конечно..

настройки mysql для этого случая — в студию.

10М+ записей мускуль дапмит/импортит за десяток минут. на любом железе. ;)

Интересное утверждение.

Насколько я помню, личным опытом не подтверждается.

Хотя порядок — да, близкий.

Но ведь режим работы с базой не был описан.

И далеко не во всех случаях необходимо (и неизбежно) постоянно добавлять/удалять записи в таблицах с числом записей более 10 млн.