我是歌手第二季,帅康-聚焦欧冠,聚焦C罗、梅西

多线程刺进(单表)

问:为何对同一个表的刺进多线程会比单线程快?同一时刻对一个表的写操作不该该是独占的吗?

答:在数据里做刺进操作的时分,全体时刻的分配是这样的:

  • 链接耗时 (30%)
  • 发送query到服务器 (20%)
  • 解析query (20%)
  • 刺进操作 (10% * 词条数目)
  • 刺进index (10% * Index的数目)
  • 封闭链接 (10%)

从这儿能够看出来,真实耗时的不是操作,而是链接,解析的进程。

MySQL刺进数据在写阶段是独占的,可是刺进一条数据依然需求解析、核算、最终才进行写处理,比方要给每一条记载分配自增id,校验主键唯一键特点,或许其他一些逻辑处理,都是需求核算的,所以说多线程能够进步功率。

多线程刺进(多表)

分区别表后我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西运用多线程刺进。

预处理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.getConnecti我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西on();
PreparedStatement我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西 pstmt = conn.prepareStatement(sql);
for (int k = 0; k < n; k++) {
pstmt.setString(1, RandomToolkit我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西.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); //衔接归池
}猎鹰1949

多值刺进SQL

  • 一般刺进SQL:INSERT IN更上一层楼TO TBL_TEST (id) VALUES(1三极片)
  • 多值刺进SQL:INSERT INTO TBL_TEST (id) VALUES (1), (2), (3)


运用多值刺进SQL,SQL句子的总长度削减,即削减了网络IO,一起也降低了衔接upiao次数,数据库一次SQL解析,能够刺进多条数据西班牙人队。

业务(N条提交一次)

在一个业务中提交很多INSERT我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西句子能够进步功能孟小蓓的美拍。

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

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

///  
/// 履行多条SQL句子,完成数据库业务。
///
mysql磷酸奥司他韦数据我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西库
/// 多条SQL句子
public void ExecuteSqlTran(List 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;
tr维生素b12y
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringLi我是歌手第二季,帅康-聚集欧冠,聚集C罗、梅西st[n].ToString();
if (strsql.Trim().Length > 1)鲁肃
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
//后来加上的
if (n > 0 && (n % 100泼水节0 == 0 || n == SQLStringList.Count - 1))
{
tx.Commit();
spirittx = conn.BeginTransaction();
}
}
//tx.Commit(狍子);//本来一次性提交
}
catch (System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Messa芫荽ge);
}
}
}
}

10w条数据大约用时10sattempt!

 关键词: