2016-03-23 8 views
0

Ich habe einen kleinen OpenVZ-Container. 2 Kerne und 4096 MB RAM.Wird tarantool in OpenVZ helfen?

Ich habe MySQL-Datenbank (overal Größe ist 80MB InnoDb)

Wenn ich 100 Abfragen tun wie INSERT ON DUPLICATE KEY UPDATE, einige von ihnen mehr ausführt als 1 Sekunde, immer

mysql> SHOW PROFILE; 
+----------------------+----------+ 
| Status    | Duration | 
+----------------------+----------+ 
| checking permissions | 0.000040 | 
| creating table  | 0.000056 | 
| After create   | 0.011363 | 
| query end   | 1.231525 | 
| freeing items  | 0.000089 | 
| logging slow query | 0.000019 | 
| cleaning up   | 0.000005 | 
+----------------------+----------+ 
7 rows in set (0.00 sec) 

Wenn i binäre Protokollierung ausgeschaltet, es half. Also das Problem vielleicht in der Festplatte. Und tritt auf, wenn das Binärlog während der Ausführung der Abfrage schreibt.

Wird es helfen, wenn ich mysql durch das tarantool ersetze? Wie ich weiß, schreibt Tarantool auch binlogs.

Ich habe Percona mysql

mysql> select version(); 
+-----------------+ 
| version()  | 
+-----------------+ 
| 5.6.25-73.1-log | 
+-----------------+ 
1 row in set (0.01 sec) 

Hier ist die my.cnf

[client] 
default-character-set = utf8mb4 
[mysql] 

# CLIENT # 
port       = 3306 
socket       = /var/lib/mysql/mysql.sock 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

# GENERAL # 
user       = mysql 
default-storage-engine   = InnoDB 
socket       = /var/lib/mysql/mysql.sock 
pid-file      = /var/lib/mysql/mysql.pid 

# MyISAM # 
key-buffer-size    = 32M 
myisam-recover     = FORCE,BACKUP 

# SAFETY # 
max-allowed-packet    = 16M 
max-connect-errors    = 1000000 

# DATA STORAGE # 
datadir      = /var/lib/mysql/ 

# BINARY LOGGING # 
#log-bin      = /var/lib/mysql/mysql-bin 
#expire-logs-days    = 14 
#sync-binlog     = 1 

# CACHES AND LIMITS # 
tmp-table-size     = 128M 
max-heap-table-size   = 128M 
query-cache-type    = 1 
query-cache-size    = 32M 
max-connections    = 1000 
thread-cache-size    = 128 
open-files-limit    = 65535 
table-definition-cache   = 1024 
table-open-cache    = 2048 

# INNODB # 
innodb-flush-method   = O_DIRECT 
innodb-log-files-in-group  = 2 
innodb-log-file-size   = 256M 
innodb_log_buffer_size   = 32M 
innodb-flush-log-at-trx-commit = 0 
innodb-file-per-table   = 1 
innodb-buffer-pool-size  = 1G 
innodb_buffer_pool_instances = 1 

# LOGGING # 
log-error      = /var/lib/mysql/mysql-error1.log 
log-queries-not-using-indexes = 1 
slow-query-log     = 1 
slow-query-log-file   = /var/lib/mysql/mysql-slow.log 
long_query_time    = 1 
log-queries-not-using-indexes = 1 
#PERCONA 
log_slow_verbosity = microtime,query_plan,innodb 

Antwort

0

Ja Tarantool write 'binlogs' (WAL - Wal-Prinzip).

Definitiv tarantool sind schneller als mysql. Aber wahrscheinlich braucht mysql mehr tuning. Tut mir leid, ich weiß nicht viel über mysql tuning.

+0

Für Details über Tarantool WAL, SNAPSHOTS siehe http://tarantool.org/doc/book/app/b-internals.html?highlight=wal –

0

Tarantool sollte Ihnen hier helfen.

Es liefert Sub-0,001s Latenzen auch bei aktiviertem Transaktionsprotokoll. Hier ist der Code, mit dem Sie Tarantool unter schweren Lese-/Schreib-Workloads testen können: https://gist.github.com/danikin/a5ddc6fe0cedc6257853.

+0

[root @ vps13717 tar_test] # ./tar_test 127.0.0.1:3301 schreibe 3 10000000 Anfragen pro Sekunde: 563789, Antworten pro Sekunde: 515994, Ausstehende Anfragen: 47795, Latenzzeit: 92.627046 ms Sieht super aus! –

+0

Oh ja! :-) Es hat genug freie CPU-Zeit für fast jede Arbeitslast. Sie können also diese CPU-Zeit verwenden, um einen Anwendungsserver auf demselben Knoten wie ein Datenbankserver auszuführen. Tatsächlich können Sie Tarantool auch als Anwendungsserver verwenden. –