1优化概述
存储层:存储引擎、字段类型选择、范式设计。
设计层:索引、缓存、分区
架构层:多个MySql服务器、读写分离
sql语句层:多个sql语句都可以达到的目的的情况下,要选择性能高,速度快的sql语句
2事务
事务:用老保证多条‘增删改’语句的执行的‘一致性’,要么一起执行,要么都不执行。
在cmd中,开启一条语句就是一个事务的开关,默认情况下,这个模式是开启的,‘自动提交模式’,可以把它关闭,就变成了‘非自动提交模式’,需要人为提交。
2.1命令行中执行sql语句:
首先,以前的经验是:一条增删改语句,一旦回车就执行,现在我们关闭这中自动提交模式:
mysql>set autocommit = 0;
然后执行一条insert语句,执行完后查看数据库中并没有插入数据,但是这条语句已经执行成功了,如果想在数据库中插入数据,执行下面的语句:
mysql>commit;
这时候数据库便有了数据。
2.2在php中执行sql语句:
刚才是在命令行中操作的,但是实际中并非在这里操作,而是在php中操作。
我们来看一下事务的基本流程:
开启一个事务(之前是关闭事务的自动提交模式,现在不需要关闭了,照常打开)
<?php
//开启一个事务
mysql_query('start transaction');//也可以写成:begin
//执行多条sql语句
$res1 = mysql_query('insert into order values (`12`,`huhu`)');
$res2 = mysql_query('insert into order values (`23`,`lili`)');
//判断这些语句执行是否都没有问题
if($res1 && $res2)
{
mysql_query('commit');//提交事务
}else{
mysql_query('rollback');//回滚事务,此时什么都没有做
}
?>