mysql事务和配置

来源:互联网 发布:php的发展前景 编辑:程序博客网 时间:2024/06/05 18:45
一:代码写法:
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;



原创粉丝点击