mysql事务和配置

一:代码写法:
function out_data_to_mysql(&$result)
{
    global $config;
    global $ymd;
    $connect_mysql = new mysqli($config["ip_host"], $config["ip_user"], $config["ip_pwd"], "", $config["ip_port"]);
    if (false == $connect_mysql) {
        echo "连接数据库失败!\n";
        die("Connection failed: " . $connect_mysql->connect_error);
    }
    $connect_mysql->query("SET NAMES UTF8");
    $connect_mysql->select_db($config["ip_database"]);

    $num = 0;
    $connect_mysql->query('start transaction');
//    $connect_mysql->query('SET autocommit=1');
    $connect_mysql->autocommit(false);
    foreach ($result as $key => $value) {

        $mysqlKey = "\"".$key."\"";
        $mysqlTopic= "\"".$value[1]."\"";
        $mysqlVersion= "\"".$value[0]."\"";

        $sql = "replace into pushmsg.uuid_topic(uuid, topic, createtime, version, width, height) values($mysqlKey, $mysqlTopic, $ymd, $mysqlVersion, $value[2], $value[3])";
        echo $sql . "\n";
        $sqlResult = $connect_mysql->query($sql);
        if (false == $sqlResult) {
            echo $sql . " :run sql fail!\n";
        }
        $num += 1;
        //每一万次提交一次!
        if ($num % 10000 == 0) {
            $connect_mysql->commit();
        }
    }
    $connect_mysql->commit();

    echo "导入数据的数目:" . $num . "\n";
    $connect_mysql->close();
}


二:配置:

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!

***:一般MYSQL数据库默认的引擎是MyISAM,这种引擎不支持事务!如果要让MYSQL支持事务,可以自己手动修改:

方法如下:1.修改c:/appserv/mysql/my.ini文件,找到skip-InnoDB,在前面加上#,后保存文件。

2.在运行中输入:services.msc,重启mysql服务。

3.到phpmyadmin中,mysql->show engines;(或执行mysql->show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了。

也就说明支持事务transaction了。
4.mySQL数据库设置成InnoDB引擎

三:另一种代码写法:

插入200W条测试数据仅仅用了1分钟!代码如下:





$sql = “insert into twenty_million (value) values”;
for ( $i =0; $i <2000000; $i ++){
$sql .=”('50′),”;
};
$sql  substr ( $sql ,0, strlen ( $sql )-1);
$connect_mysql ->query( $sql );

这种方法的缺点是如果有一个失败,则整个都会失败,优点是效率高!!

四:展示数据库的引擎
show engines;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在项目中配置 MySQL 事务和 Spring 事务的方法如下: 1. MySQL 事务配置 对于 MySQL 事务,需要在代码中使用 JDBC API 来控制事务的开始、提交和回滚等操作。具体步骤如下: - 获取数据库连接:使用 DriverManager 或 DataSource 获取数据库连接。 - 开启事务:调用 Connection 对象的 setAutoCommit(false) 方法,将自动提交设置为 false,即开启事务。 - 执行数据库操作:在事务中执行一组数据库操作,可以使用 PreparedStatement 或 Statement 对象来执行 SQL 语句。 - 提交事务或回滚事务:如果所有的数据库操作都执行成功,调用 Connection 对象的 commit() 方法提交事务;如果任何一个数据库操作失败,调用 Connection 对象的 rollback() 方法回滚事务。 - 关闭数据库连接:无论事务执行成功或失败,都需要关闭数据库连接。 2. Spring 事务配置 对于 Spring 事务,可以使用声明式事务或编程式事务来实现事务的控制。具体步骤如下: - 声明式事务配置:在 Spring 配置文件中配置事务管理器(TransactionManager)和事务通知(TransactionAdvice),并在需要控制事务的方法上添加事务注解(@Transactional)。 - 编程式事务配置:在代码中使用 TransactionTemplate 或 PlatformTransactionManager 等 Spring 提供的事务 API 来手动控制事务的开始、提交和回滚等操作。 以上是 MySQL 事务和 Spring 事务的基本配置方法,具体实现方式还要根据实际的业务需求和技术栈来进行选择和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值