MySQL数据库插入速度调整

提升MySQL写入性能
针对业务增长导致的数据写入需求增加,本文档介绍了通过优化主机IO及调整MySQL配置参数来提高MySQL写入速度的方法,包括使用独立表空间、关闭影响IO的进程、调整MySQL配置文件中的相关参数等。

环境介绍:

CentOS 6.5

MySQL 5.5.40

硬件:4核,4GB

参考链接:

http://dev.mysql.com/doc/refman/5.5/en/insert-speed.html
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html

由于业务量迅速扩展,对写入速度需求越来越高,现预估需要将数据插入速度由每分钟2000条,调整为每秒100条即每分钟6000条;
解决办法:
1.优化数据库主机IO;
2.调整MySQL对应参数。
开始处理:
1.主机IO优化
a.将数据库设置为独立表空间,并且将每个表空间放在不同的硬盘上;
b.关闭主机其他影响IO的进程。
2. 调整my.cnf参数,提升MySQL写速度

innodb_autoextend_increment =128M

innodb_log_buffer_size =32M

innodb_log_file_size=128M

bulk_insert_buffer_size=128M

以上参数是逐步变更到对应大小的

innodb_flush_log_at_trx_commit = 0

3.修改insert插入为insert delayed.  insert delayed特点:立即返回结果,后台进行处理插入处理。



### 向MySQL数据库插入数据 为了通过Python向MySQL数据库插入数据,需遵循一系列操作流程。这包括建立与MySQL服务器的连接、执行SQL语句以创建或指定要使用的表格、准备待插入数据并最终提交这些更改。 #### 建立数据库连接 首先,需要安装`PyMySQL`库以便能够从Python访问MySQL服务。一旦完成环境设置,则可以通过调用`pymysql.connect()`函数来初始化一个新的数据库会话[^3]: ```python import pymysql conn = pymysql.connect( host='127.0.0.1', user='root', password='123456', database='empdb', port=3307, charset='utf8' ) print("连接成功") ``` 此代码片段展示了如何配置参数以匹配目标MySQL实例的具体情况,并打印一条消息确认已成功建立了通信链路。 #### 执行SQL命令 接下来,在获取到了有效的数据库链接对象之后,应该利用它所提供的方法去发送查询请求给DBMS。对于插入记录而言,通常的做法是构建INSERT INTO SQL指令并通过游标的execute()方法传递该字符串形式的命令[^2]: ```sql insert into employees (first_name, last_name, birth_date) values (%s, %s, %s); ``` 这里采用占位符(%s),而不是直接拼接变量值进入SQL文本之中,从而有效防止潜在的安全风险——即所谓的SQL注入漏洞。实际应用时,应将具体的字段名替换为对应于目的表结构的内容;同时也要注意调整好相应的输入参数列表。 #### 提交事务与关闭资源 当所有的修改都完成后,记得调用commit()使所有变更生效,随后释放占用的各种资源(比如断开网络套接字)。如果不这样做的话,即使前面的工作看似顺利完成,但在某些情况下仍可能出现未保存的结果丢失等问题。 ```python try: with conn.cursor() as cursor: sql = "INSERT INTO `employees` (`first_name`, `last_name`, `birth_date`) VALUES (%s, %s, %s)" cursor.execute(sql, ('John', 'Doe', '1990-01-01')) # 确认交易 conn.commit() finally: # 关闭连接 conn.close() ``` 上述例子说明了一个完整的交互周期:打开通道->发出指令->接收反馈->结束对话。值得注意的是,这里的with-as语法糖使得管理临时性的上下文变得更加简洁明了,同时也确保无论是否发生异常都能正常清理现场。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值