mysql的innodb_flush_log_at_trx_co

2020-07-21  本文已影响0人  frankie_cheung
innodb_flush_log_at_trx_commit 代表redolog刷新到磁盘的策略:

redolog 在事务进行中会持续写日志信息到redolog buffer中。

sync_binlog代表binlog持久化到磁盘的策略:
实验
CREATE TABLE `test_tables` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
   `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
   `username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
   `password` int(11) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ;

测试代码

import time
import pymysql

docker_mysql = {'host': '192.168.124.130', 'port': 3320, 'user': 'root8061',
                'passwd': 'Root@2020_1', 'db': 'test', "charset": 'utf8'}

conn = pymysql.connect(**docker_mysql)
cursor = conn.cursor()

start = time.clock()

for i in range(1, 200000):
    sql_insert = '''
    insert into test_tables(id,username,password) values({},md5(uuid()),{})
    '''.format(i, i)
    print(sql_insert)
    cursor.execute(sql_insert)
    conn.commit()

end = time.clock()

total_time = end - start
print(total_time)

#  innodb_flush_log_at_trx_commit=1 sync_binlog=1  221.3300878603345
#  innodb_flush_log_at_trx_commit=2 sync_binlog=1  200.04964449931688
#  innodb_flush_log_at_trx_commit=2 sync_binlog=0  201.1382430877705

conn.close()

测试结果如下:

上一篇 下一篇

猜你喜欢

热点阅读