(C#版本)提升SQlite数据库效率——开启事务,极速插入数据,3秒100万,32秒1000万条数据
SQLite插入数据效率最快的方式就是:开启事务 + insert语句 + 关闭事务(提交)
利用事务的互斥性,如果在批量的插入操作前显式地开启一次事务,在插入操作结束后,提交事务,那么所有的操作将只执行一次事务,大大地提高IO效率
开启事务和提交事务时缺省的,如果不显式写出来,将在每次insert语句前开启事务,insert语句后提交,如果执行insert语句1000万次,那么将自动开启并提交1000万次!!!
可以尝试,去掉下面代码中两行红色代码,速度将显著下降!!!
1 using System; 2 using System.IO; 3 using System.Data.SQLite; 4 using System.Diagnostics; 5 using System.Data.Common; 6 7 namespace SqliteTran 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 DbProviderFactory Dbfactory = SQLiteFactory.Instance; 14 using (DbConnection dbConn = Dbfactory.CreateConnection()) 15 { 16 //连接数据库 17 File.Delete("NBA.db4"); 18 dbConn.ConnectionString = "data source = NBA.db4"; 19 dbConn.Open(); 20 //创建数据表 21 string sql = "create table Garnett ([age] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; 22 DbCommand cmd = dbConn.CreateCommand(); 23 cmd.Connection = dbConn; 24 cmd.CommandText = sql; 25 cmd.ExecuteNonQuery(); 26 27 // 添加参数 28 cmd.Parameters.Add(cmd.CreateParameter()); 29 // 开始计时 30 Stopwatch watch = new Stopwatch(); 31 watch.Start(); 32 33 DbTransaction trans = dbConn.BeginTransaction(); 34 // 连续插入记录 35 for (int i = 0; i < 1000000; i++) 36 { 37 cmd.CommandText = "insert into Garnett ([s]) values (?)"; 38 cmd.Parameters[0].Value = i.ToString(); 39 cmd.ExecuteNonQuery(); 40 } 41 trans.Commit(); 42 dbConn.Close(); 43 // 停止计时 44 watch.Stop(); 45 Console.WriteLine(watch.Elapsed); 46 Console.ReadLine(); 47 } 48 } 49 } 50 }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
站长dedecms网站被挂马清理过程与分析解决
最近收到一位客户的反馈,告知网站又被挂马,(织梦程序真让人头疼总是被挂马,dedecms经常是被挂马真晕了是的~)相信站长们都有遇到过网站被挂马或代码恶意植入的问题。下面把处理流程写下来,帮助大家了解并简单处理的过程。 1,分析收录 通过百度指令分析一下收录情况。 百度搜索 site: lcshhgg.cn可以看到收录不少垃圾页面。如图: 网站被挂马收录的一些页面快照 点击几条收录均为这些动态的URL路径 网站木马路径 分析得出网站中被植入了一些PHP网页木马,大量的生成调用动态的垃圾页面。接下来,连接FTP进行删除清理操作。 2,通过FTP目录排查恶意网马 通过FTP工具登录到网站的FTP根目录,分析查找到这些植入的PHP文档(一般情况下很容易分析出)或者请网站的技术人员帮助分析查找。 如图: 网站被挂马的webshell文件 可以看到这些PHP文档就是恶意网页生成的元凶。全部进行删除,并且把FTP里面的全检查一遍,彻底清除恶意代码。再详细检查下其他目录的修改时间以及可疑文件,如果不确定木马的话 建议找专业做安全的Sine安全来处理。 3,全站查杀网站木马清除木马后门 为了彻底清除被...
- 下一篇
程序员到架构师需要的编程基础
程序员到架构师的进阶之路是非常艰辛和漫长的,不但需要掌握很多高级的知识技能,还需要有过硬的基础知识。《Java架构师指南》就是这样一本指导小白到架构师进阶的书。本文摘取了这本书中的第一章节,主要介绍Java程序员走向架构师的基础知识,还有开发环境的搭建。通过本文的学习,可以大致了解程序员的进阶之路,也可更加深刻地认识到程序员的发展方向。 点此链接购买纸书 本书特别适合Java Web领域的开发人员以及刚步入职场的新手。本书通过讲述Java架构师必备的知识技能,让广大读者在原有知识的基础上更上一个台阶,争取早日实现架构师的梦想。 对于架构师的定义,每个人的看法都不尽相同,我结合自己多年的工作经验,也只是大致定义了一个范围,希望可以帮助到别人。读者可以结合自己的实际情况,通过阅读本书,不断地扩展和充实这种范围,以达到自己理想中的境界。“不想当将军的士兵,不是好士兵。”在软件行业中,也似乎有这样一句话:“不想当架构师的程序员,不是好程序员。”虽然这看似是一种调侃,但从学习的角度来说,成为架构师,显然是一个好的目标!人只有在心里有了目标,才会变得更加幸福。 如果你不希望一直停留在Java...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果