+
80
-

mysql插入数据的吞吐量是多少?

mysql插入数据的吞吐量是多少?


网友回复

+
1
-

可以采用批量插入来提供系统吞吐量

1、首先计算单条sql记录插入的sql大小

varchar(10)代表可以存储10个字符,不管是英文还是中文,最多都是10个,这部分假设存储的是中文,在utf-8mb4下,10个中文占用10*4 = 40个字节那么一行数据最多占用:4+4+4+40 = 52字节

my.ini里有max_allowed_packet这个参数控制通信的packet大小。mysql默认的sql语句的最大限制是1M(mysql5.7的客户端默认是16M,服务端默认是4M),可以根据设置查看。官方解释是适当增大max_allowed_packet参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理。

官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

查看服务器上的参数:

mysql> show variables like '%max_allowed_packet%'; +--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | max_allowed_packet | 33554432 | | slave_max_allowed_packet | 1073741824 | +--------------------------+------------+

2 rows in set (0.00 sec)

33554432字节 = 32M ,也就是规定大小不能超过32M。

2、计算一次能插入的最大行记录

1M计算的话,(1024*1024)/52 ≈ 20165,为了防止溢出,最大可一次性插入20000条(根据自己的配置和sql语句大小计算)。那么32M的话就是:20000 *32 = 640000也就是64W条。 个人感觉,最佳大小是max_allowed_packet的一半,也就是极限能插入64W,选用32W也许性能会更好一些,同时也不会对mysql的其他操作产生太大的影响。
我知道答案,我要回答