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

你在四川省建设安全与质量监督网站软件外包公司排行

你在四川省建设安全与质量监督网站,软件外包公司排行,网站建设征求意见的通知,建筑工程公司有哪些职位Mysql 插入大批量数据调优方法[toc]1、多线程插入(单表)在数据里做插入操作的时候,整体时间的分配是这样的:链接耗时 (30%)发送query到服务器 (20%)解析query (20%&#…

Mysql 插入大批量数据调优方法

[toc]

1、多线程插入(单表)

在数据里做插入操作的时候,整体时间的分配是这样的:

链接耗时 (30%)

发送query到服务器 (20%)

解析query (20%)

插入操作 (10% * 词条数目)

插入index (10% * Index的数目)

关闭链接 (10%)

从这里可以看出来,真正耗时的不是操作,而是链接,解析的过程。

MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率。

2、多线程插入(多表)

分区分表后使用多线程插入。

3、预处理 Sql

  • 普通SQL,即使用Statement接口执行SQL

  • 预处理SQL,即使用PreparedStatement接口执行SQL

使用PreparedStatement接口允许数据库预编译SQL语句,以后只需传入参数,避免了数据库每次都编译SQL语句,因此性能更好。

String sql = "insert into testdb.tuser (name, remark, createtime, updatetime) values (?, ?, ?, ?)";
for (int i = 0; i < m; i++) {//从池中获取连接Connection conn = myBroker.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql);for (int k = 0; k < n; k++) {pstmt.setString(1, RandomToolkit.generateString(12));pstmt.setString(2, RandomToolkit.generateString(24));pstmt.setDate(3, new Date(System.currentTimeMillis()));pstmt.setDate(4, new Date(System.currentTimeMillis()));//加入批处理pstmt.addBatch();}pstmt.executeBatch();    //执行批处理pstmt.close();myBroker.freeConnection(conn); //连接归池
}

3、多值插入SQL

  • 普通插入SQL:INSERT INTO TBL_TEST (id) VALUES(1)

  • 多值插入SQL:INSERT INTO TBL_TEST (id) VALUES (1), (2), (3)

使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。

4、事务(N条提交一次)

在一个事务中提交大量INSERT语句可以提高性能。

1、将表的存储引擎修改为myisam

2、将 sql 拼接成字符串,每 1000 条左右提交事务。

/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>mysql数据库
/// <param name="SQLStringList">多条SQL语句</param>
public void ExecuteSqlTran(List<string> SQLStringList) {using(MySqlConnection conn = new MySqlConnection(connectionString)){if (DBVariable.flag) {conn.Open();MySqlCommand cmd = new MySqlCommand();cmd.Connection = conn;MySqlTransaction tx = conn.BeginTransaction();cmd.Transaction = tx;try {for (int n = 0; n < SQLStringList.Count; n++) {string strsql = SQLStringList[n].ToString();if (strsql.Trim().Length > 1) {cmd.CommandText = strsql;cmd.ExecuteNonQuery();}//后来加上的if (n > 0 && (n % 1000 == 0 || n == SQLStringList.Count - 1)) {tx.Commit();tx = conn.BeginTransaction();}}//tx.Commit();//原来一次性提交} catch (System.Data.SqlClient.SqlException E) {tx.Rollback();throw new Exception(E.Message);}}}
}
http://www.wangmingla.cn/news/64511.html

相关文章:

  • 设计师接私单seo优化查询
  • 计算机专业做网站运营优化整站
  • 网站开发如何共用菜单栏怎么做营销
  • 泉州专业网站建设公司哪家好百度平台推广
  • thinkphp5微信公众号开发百度seo搜索排名
  • 白鹭引擎可以做网站吗seo的全称是什么
  • 学做网站好学吗专业全网优化
  • 福田蒙派克合肥网站seo
  • 获取网站开发语言黄冈网站推广软件
  • 如何在mac安装wordpress徐州seo建站
  • 友汇网站建设管理后台最新nba排名
  • 椒江哪里可以做公司网站南宁seo收费
  • 有网站和无网站的区别147seo工具
  • 棋牌网站开发多少钱徐州网站优化
  • 做计算机模拟ie题模拟网站打不开徐州seo外包
  • 建站行业有前途被国家禁止访问的网站怎么打开
  • 地产公司做网站维护写代码么百度竞价排名危机事件
  • 苏州网站建设设计制作公司怎么样哈尔滨网站建设
  • 深圳做模板网站免费网站推广优化
  • 网站建设招标书范本怎么在百度上做推广
  • 大学物流仓储作业代做网站中国2022年重大新闻
  • dreamweaver教程做网站东莞做一个企业网站
  • 平谷建站推广做电商一个月能挣多少钱
  • 提示网站建设页面必应搜索国际版
  • 网站底部的备案信息武汉最新消息今天
  • 烟台汽车租赁网站建设宁波seo企业网络推广
  • 昌平做网站公司查网站流量查询工具
  • 如何从零开始做网站软文是什么意思通俗点
  • 红酒网页设计图片seo外链资源
  • 做网站网址福州网seo