MySQL的那点事!

 

我先简单的介绍下事务:事务必须满足4个条件:1、原子性,2、一致性,3、隔离性,4、持久性。

MySQL的事务处理主要有两种方法

1、用 begin rollback commit 来实现
  begin:开始的事务
  rollback:事务回滚
  commit:事务确认,
2、直接用set来改变MySQL的自动提交模式
MySQL默认的是自动提交的,也就是你提交一个QUERY, 他就直接执行!我们可以通过set autocommit=0 禁止自动提交, set autocommit=1开启自动提交;
来实现事务,
通过第二种方法实现的代码:


<?php

$header = mysql_connect("localhost","root","");//数据库连接
mysql_select_db("talk");//选择数据库
mysql_query("SET AUTOCOMMIT = 0");//设置为不自动提交;数据库默认的是立即执行
mysql_query("BEGIN");//开始事务定义;
if(!mysqli_query("insert into trans(id) value ('3')"));
{
mysql_query("BOOLBACK");//失败时执行回滚;

}
if(!mysql_query("insert into trans(id) value(''4)"))
{
mysqli_query("BOOLBACK");//失败的时候执行回滚;
}
mysql_query("COMMIT");//执行事务;
mysql_query("$header");

?>

MyISAM和InnoDB区别:
  1. MyISAM引擎的简单SELECT、INSERT和UPDATE快速操作

  2. MyISAM类型的数据文件可以在不同的操作系统中COPY,部署的时候方便点。

  3. MyISAM是非事务安全型的,而InnoDB是事务安全型的。

  4. MyISAM锁的粒度是表级,而InnoDB支持行级锁定。

  5. MyISAM支持全文类型索引,而InnoDB不支持全文索引。

  6. MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。

  7. MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。

  8. InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(alter table tablename type=innodb)。

应用场景

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。

 

数据库表的类型

创建表的时候定义的表性质:静态表、动态表、压缩表。默认的是静态表
若存在varchar text字段则表的类型为动态

静态表的::::字段有固定的的长度。例如:char(20)

动态表:::::字段的长度是变化的;如varchar(这种表比较节省空间、复杂度高每条记录都有一个header,作用就是表明该记录有多长,所有的字符串列都是动态的)

压缩表:::::只读,使用很少的空间,用myisampack工具创建,

 

posted @ 2016-11-24 19:17  誓死不归  阅读(171)  评论(0编辑  收藏  举报