当前位置: 首页 > news >正文

河北邢台wap网站建设南昌网页制作

河北邢台wap网站建设,南昌网页制作,深圳做网站服务商,微信推广网站怎么做转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM#xff0c;InnoDB#xff0c;上个月做个项目时#xff0c;先使用了InnoDB#xff0c;结果速度特别慢#xff0c;1秒钟只能插入10几条。后来换成MyISAM格式#xff0c;一秒钟插入上万条。…转载 http://www.jb51.net/article/5620.htm   MySQL支持的两种主要表存储格式MyISAMInnoDB上个月做个项目时先使用了InnoDB结果速度特别慢1秒钟只能插入10几条。后来换成MyISAM格式一秒钟插入上万条。当时决定这两个表的性能也差别太大了吧。后来自己推测不应该差别这么慢估计是写的插入语句有问题决定做个测试测试环境Redhat Linux94CPU内存2GMySQL版本为4.1.6-gamma-standard测试程序PythonPython-MySQL模块。测试方案1、MyISAM格式分别测试事务和不用事务两种情况2、InnoDB格式分别测试AutoCommit1不用begin transaction和用begin transaction模式     AutoCommit0 不用begin transaction和用begin transaction模式四种情况。 测试方法为插入10000条记录。为了测试不互相影响单独建立了专用的测试表建表语句如下1、MyISAM不用事务表CREATE TABLE MyISAM_NT (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEMyISAM; 2、MyISAM用事务表:CREATE TABLE MyISAM_TS (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEMyISAM; 3、InnoDB关闭AutoCommit不用事务:CREATE TABLE INNODB_NA_NB (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEInnoDB; 4、InnoDB关闭AutoCommit用事务:CREATE TABLE INNODB_NA_BE (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEInnoDB; 5、InnoDB开启AutoCommit不用事务:CREATE TABLE INNODB_AU_NB (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEInnoDB; 6、InnoDB开启AutoCommit用事务:CREATE TABLE INNODB_AU_BE (  TableId int(11) NOT NULL default 0,  TableString varchar(21) NOT NULL default ) ENGINEInnoDB; 测试的Python脚本如下 #!/usr/bin/env PythonMyISAM,InnoDB性能比较作者空心菜Invalid时间2004-10-22import MySQLdb import sysimport osimport stringimport time c None testtables [(MyISAM_NT,None,0),             (MyISAM_TS,None,1),             (INNODB_NA_NB,0,0),             (INNODB_NA_BE,0,1),             (INNODB_AU_NB,1,0),             (INNODB_AU_BE,1,1)             ] def BeginTrans(): print ExecSQL:BEGIN;    c.execute(BEGIN;)    return def Commit():    print ExecSQL:COMMIT;    c.execute(COMMIT;)    return def AutoCommit(flag):    print ExecSQL:Set AUTOCOMMIT str(flag)    c.execute(Set AUTOCOMMIT str(flag))    returndef getcount(table):    #print  ExecSQL:select count(*) from table    c.execute(select count(*) from table)    return c.fetchall()[0][0] def AddTable (Table,TableId,TableString): sql INSERT INTO Table(TableId, TableString) VALUES( TableId , TableString )    try:        c.execute(sql)    except MySQLdb.OperationalError,error:        print AddTable Error:,error        return -1;    return c.rowcount def main(): argv sys.argv if len(argv) 2:        print Usage:,argv[0], TableId TestCount \n        sys.exit(1)    global c        #mysql访问cursor     db_host localhost    db_name demo    db_user root    db_user_passwd     print Config:[%s %s/%s %s] DB\n%(db_host,db_user,db_user_passwd,db_name)    if len(argv) 2:        tableid argv[1]        testcount int(argv[2])   # for test in testtables:        #每次操作前都重写建立数据库连接            try:            mdb MySQLdb.connect(db_host, db_user, db_user_passwd, db_name)         except MySQLDb.OperationalError,error:            print Connect Mysql[%s %s/%s %s] DB Error:%(db_host,db_user,db_user_passwd,db_name),error,\n            sys.exit(1)        else:            c mdb.cursor()        table,autocommit,trans test        starttime time.time()        print table, ,time.strftime(%y-%m-%d %H:%M:%S,time.localtime()) if autocommit ! None:            AutoCommit(autocommit)        if trans 1:            BeginTrans() for i in xrange(testcount):            tablestring %020d%i            if (AddTable(table,tableid,tablestring)1):                print AddTable Error,tablestring        if trans 1:            Commit()        print time.strftime(%y-%m-%d %H:%M:%S,time.localtime())        endtime time.time()        usedtime endtime-starttime print table,count:,getcount(table), used time:,usedtime        c.close()        mdb.close() if __name__ __main__:    main()测试结果如下Config:[localhost root/ demo] DB MyISAM_NT   04-10-22 16:33:2404-10-22 16:33:26MyISAM_NT count: 10000  used time: 2.1132440567MyISAM_TS   04-10-22 16:33:26ExecSQL:BEGIN;ExecSQL:COMMIT;04-10-22 16:33:29MyISAM_TS count: 10000  used time: 2.65475201607INNODB_NA_NB   04-10-22 16:33:29ExecSQL:Set AUTOCOMMIT 004-10-22 16:33:31INNODB_NA_NB count: 10000  used time: 2.51947999001INNODB_NA_BE   04-10-22 16:33:31ExecSQL:Set AUTOCOMMIT 0ExecSQL:BEGIN;ExecSQL:COMMIT;04-10-22 16:33:35INNODB_NA_BE count: 10000  used time: 3.85625100136INNODB_AU_NB   04-10-22 16:33:35ExecSQL:Set AUTOCOMMIT 104-10-22 16:34:19INNODB_AU_NB count: 10000  used time: 43.7153041363INNODB_AU_BE   04-10-22 16:34:19ExecSQL:Set AUTOCOMMIT 1ExecSQL:BEGIN;ExecSQL:COMMIT;04-10-22 16:34:22INNODB_AU_BE count: 10000  used time: 3.14328193665结论由此得知影响速度的主要原因是AUTOCOMMIT默认设置是打开的我当时的程序没有显式调用BEGIN;开始事务导致每插入一条都自动Commit严重影响了速度。算来也是个低级错误 相关参考http://dev.mysql.com/doc/mysql/en/COMMIT.htmlhttp://dev.mysql.com/doc/mysql/en/InnoDB_and_AUTOCOMMIT.html转载于:https://www.cnblogs.com/yingjie13/p/4273238.html
http://www.pierceye.com/news/535290/

相关文章:

  • 山东建设人才网站高端母婴网站模板
  • 物业服务网站建设佛山做网站公司有哪些
  • 企业网站模板中文网站域名名字
  • 在服务器网站上做跳转网页设计代码动漫
  • 科协网站建设的意见合肥哪里有做网页的地方
  • 为企业做网站策划案永康网站推广
  • 做个企业网网站怎么做linux建网站
  • 专业建站公司主要做什么wordpress加入下载标签
  • 韩都衣舍网站建设方案美食网站怎么做dw
  • 电商网站开发 参考文献wordpress验证码注册
  • ic外贸网站建设wordpress和shopex
  • 网站技术制作流程图国内顶尖小程序开发公司
  • 免费网站建设下载优化关键词规则
  • 网站浮动窗口如何做自己怎么做淘宝客网站
  • 石材外贸在哪个网站做网页版 微信
  • 网站开发属于程序员吗sem 优化软件
  • 公司做网站是管理费用小程序官方文档
  • 公司网站推广技巧响水网站设计
  • 徐州本地网站wap页面是什么
  • 网站开发应用价值做套网站多少钱
  • asp.net网站模板免费下载怎么才能访问自己做的网站
  • 长沙企业网站制作宝安公司网站建设
  • 做网站需要拉多大的宽带dw做的网站怎么做后台
  • 公司网站建设设计公司哪家好wordpress自动封ip
  • 郫县网站制作wordpress搜索打钩
  • 哪些网站可以做招商广告语wordpress发文章的id怎么不连续
  • 家私网站栏目和功能需求策划网页样式库
  • 什么是网站网页主页企业电子邮箱格式
  • 金属建材企业网站建设方案用pycharm做网站
  • 重庆网站空间黄骅港一期码头潮汐表