zoukankan      html  css  js  c++  java
  • mysql调优

    innodb_flush_log_at_trx_commit

    0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。

    1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。

    2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

     

    innodb_autoextend_increment(动态,默认为8M)

    当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)。

    sync_binlog:是MySQL 的二进制日志(binary log)同步到磁盘的频率。

    取值:0-N

    sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。这个是性能最好的。

    sync_binlog=1,当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

    sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

    了解了上面的三个参数后开始调优,准备测试脚本

    # -*- coding:utf-8 -*-
    import threading
    import time
    import MySQLdb
    
    start = time.clock()
    db = MySQLdb.connect("IP","账号","密码","库名" )
    cursor = db.cursor()
    
    class SummingThread(threading.Thread):
        def __init__(self, low, high):
            super(SummingThread, self).__init__()
            self.low = low
            self.high = high
            self.total = 0
     
        def run(self):
            for i in range(self.low, self.high):
                try:
                    # 执行sql语句
                    cursor.execute("自行写入")
                    db.commit()
                    # 提交到数据库执行
                except:
    
                    db.rollback()
                
                    self.total += i
                    
                print(i)
     #指定执行次数
    thread1 = SummingThread(0, 1000000)
    thread1.start()
    thread1.join()
    result = thread1.total 
    end = time.clock()
    print "read: %f s" % (end - start)
    print(result)

    调优结果

    read: 11.400000 s
    read: 11.790000 s
    innodb_flush_log_at_trx_commit = 2



    read: 7.490000 s
    read: 7.480000 s
    read: 7.700000 s
    read: 8.810000 s
    read: 9.080000 s
    read: 9.380000 s



    innodb_flush_log_at_trx_commit = 2
    innodb_autoextend_increment = 256


    read: 7.300000 s
    read: 6.820000 s
    read: 6.840000 s
    read: 8.640000 s
    read: 8.440000 s

    innodb_flush_log_at_trx_commit = 2
    innodb_autoextend_increment = 256
    sync_binlog = 500

    read: 7.810000 s
    read: 7.310000 s
    read: 7.740000 s

  • 相关阅读:
    17年day4
    11.7NOIP模拟题
    P3389 【模板】高斯消元法
    洛谷 P2136 拉近距离 题解
    浅谈SPFA判负环
    洛谷 P1629 邮递员送信 题解
    洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party 题解
    洛谷 P3905 道路重建 题解
    洛谷 P1351 联合权值 题解
    洛谷 P4779 【模板】单源最短路径(标准版) 题解
  • 原文地址:https://www.cnblogs.com/cainiaoit/p/8580120.html
Copyright © 2011-2022 走看看