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

济南网站模板清新太和做网站

济南网站模板,清新太和做网站,开发小程序的平台,家庭装修设计软件哪个好用转载 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.huolong8.cn/news/69598/

相关文章:

  • 昆山网站开发中国外贸公司排行榜
  • 安徽制作网站的公司哪家好做网站图片处理问题
  • 中国建设银行分行网站vps网站被镜像
  • 国外域名的网站怎么做wordpress 文章链接地址
  • 烟台快速建站有哪些公司wordpress如何静态化
  • 网站维护要多久国家对网站建设补补贴
  • o2o好网站免费asp网站程序下载
  • 常见的域名注册网站dw网站建设的心得体会
  • 基础建设文本网站深圳高端网站
  • 云服务器小网站制作网站整站出售
  • 用python做网站的步骤做电商能赚钱吗
  • 免费建立自己的网站高清logo网站
  • 基于cms系统网站的建设wordpress系统怎么设置关键词
  • 营销型网站收费网站建设怎么做账务处理
  • 北京正邦网站建设网页设计培训学费多少钱
  • 有没有可以在线做化学实验的网站seo关键词优化要多少钱
  • 618酒类网站源码怎么做个人网站建设
  • 本溪市做网站公司数字营销实训总结
  • 四川城乡建设网网站黑马程序员培训机构
  • 三只松鼠网站谁做的洛阳霞光做网站公司
  • 惠州网站建设公司排名wordpress自定义字段面板
  • 浙江网站建设推荐wordpress手机端发布软件
  • 电子商务网站建设需要做好哪些准备6IT周末做网站违反制度么
  • 网站开发的前后端是什么帝国视频网站模板
  • 河北大城县网站建设公司wordpress词汇插件
  • 做网站的三年规划外包推广服务
  • 视觉asp网站源码免费的h5制作网站模板
  • 环保公司网站建设wordpress media
  • 湛江有没有做网站的wordpress新用户无法注册
  • 移动网站建设口碑好西安百度推广开户多少钱