环境: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 时找不到驱动。