ms ado 操作 mysql

本文对比分析了MySQL 5.7与8.0在不同环境下(包括32位与64位系统)的性能表现,探讨了innodb_flush_log_at_trx_commit参数设置对数据库稳定性的影响,以及存储过程在代码中的正确调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:CPU i5( 2.5Gx4), OS Win10 64, Memory 8G

-----------------------------------

1, mysql 5.7.10 32 ( mysql-connector-odbc-5.3.4-win32) 设置innodb_flush_log_at_trx_commit=0  后 ,不停的写数据库,容易把数据库写的再也启动不起来,一切操作都是 lost query. 最小时4G最多是10.8G就挂了。日志是 table is full ,out of tablesize.

***测试了 mysql 5.7.10 64(mysql-connector-odbc-5.3.11-win32) 文件写到15G没有挂掉。OS与MySql 必须 一致?还是驱动?

2, mysql 8.0 64 ,皮实多了,写不死,有个单表文件写到12G,也没有挂掉。用 mysql workbench drop 很快。

但是,但是,我的程序(用了很多连接),在mysql 5.7 32中 insert 插入速度能达到3800条左右/秒,在 mysql 8.0 64降低到了2000条左右/秒。CPU mysqld 50% myApp 40% 再加上其它也就100%.  mysql 5.7 32 disk rate 10%,  mysql 8.0 64 80%。

-----------------------------------

1,在代码中调用存储过程,看到(没看仔细是用的哪个驱动)是字符串是 "{ call procedurename ()}",  用ado,直接写存储过程的名称即可 "procedurename"

2, 代码中创建存储过程,

无论是在 mysql workbench中 还是 mysql 命令行中,一般都这样写

delimeter $$

drop procedure if exists proce_name$$

create procedure proce_name( in f1 int)

begin

insert into tbl_name( f1) values( f1);

end$$

delimeter ;

如果把以上代码,直接拷进程序代码中,是不可以的。执行时会报错。

delimeter 是在 mysql workbench 或者是在 mysql.exe中解析的,我们写的程序是直接提交到 mysqld.exe中的,mysqld.exe不认识delimeter 的。

----------------------------------

mysql-connector-odbc

1,如果程序是32位的,必须安装32的驱动,安装64位的在Connector.Open 时找不到驱动。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值