1、事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个SQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。 特点:原子性、一致性、隔离性、持久性
2、MySQL中myisam与innodb的区别 (1)InnoDB支持事物,而MyISAM不支持事物
(2)InnoDB支持行级锁,而MyISAM支持表级锁
(3)InnoDB支持MVCC, 而MyISAM不支持
(4)InnoDB支持外键,而MyISAM不支持
(5)InnoDB不支持全文索引,而MyISAM支持。
3、MySQL中视图和表的区别?(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。 (2)视图没有实际的物理记录,而表有。 (3)视图是窗口,表是内容。 (4)视图是逻辑概念的存在,不占用物理空间;而表占用物理空间。 (5)表可以及时对它进行修改;而视图只能用创建语句来修改。 (6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。 (7)从安全来说,视图可以防止用户直接接触表,因而用户不知道表结构。 (8)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 (9)视图的建立和删除只影响视图本身,不影响对应的表。
4、存储过程(procedure)和函数(function)区别本质上它们都是存储程序。函数只能通过return语句返回单个值或表对象;而存储过程不允许执行return语句,但是可以通过output参数返回多个值。函数限制比较多,不能用临时变量,只能用表变量,还有一些函数都不可用等等;而存储过程的限制相对就比较少。函数可以嵌入在SQL语句中使用,可以在select语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。
5、事务隔离(1)Read uncommitted 未提交读(RU) 最弱的隔离级别,事务中的修改即使没有提交,对其他事务也都是可见的。(即脏读) (2)Read committed 提交读 不可重复读(RC) 大多数数据库系统的默认隔离级别。 解决了脏读的问题,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。一个事务两次执行同样的查询,可能会得到不一样的结果。 (3)Repeatable read 可重复读(RR) mysql默认隔离级别。解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。 该级无法解决幻读的问题,幻读是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻读。 innodb和xtradb存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)解决了幻读的问题。 (4)Serializable 可串行化 该级是最高的级别,通过强制事务串行执行,避免了幻读的问题,该级会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题, 6、索引MYSQL中索引文件以B树结构存储,索引可分为单列索引和多列索引。对于多列索引中,一个SQL语句是否用到了索引取决于其数据是否符合最左前缀原则。 MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符(%或者_)开头的情形。例如,“SELECT id FROM people WHERE firstname LIKE ‘Li%’;”这个查询将使用索引,但“SELECT id FROM people WHERE firstname LIKE ‘%ike’;”这个查询不会使用索引。
|