10-06 26—30

26.简述事务及其特性?

事务具有四个特性,即 ACID 特性:
( 1 )原子性:事务中包括的所有操作要么都做,要么都不做。
( 2 )一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态。
( 3 )隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。
( 4 )持续性:事务一旦提交,对数据库的改变是永久的。

27.简述触发器、函数、视图、存储过程?

触发器:触发器是一个特殊的存储过程,它是MySQL在insert、update、delete的时候自动执行的代码块。

函数:MySQL中提供了许多内置函数,还可以自定义函数(实现程序员需要sql逻辑处理)
   自定义函数创建语法:
       创建:CREATE FUNCTION 函数名称(参数列表)  
          RETURNS 返回值类型  函数体
   修改: ALTER FUNCTION 函数名称 [characteristic ...]
   删除:DROP FUNCTION [IF EXISTS] 函数名称
   调用:SELECT 函数名称(参数列表)
  
视图:视图是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影
      create view view_name as select 语句
  
存储过程:把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现(经过第一次编译后再次调用不需要再次编译,比一个个执行sql语句效率高)
   create procedure 存储过程名(参数,参数,…)
   begin
   //代码
   end

28.简述MySQL的执行计划的作用及使用方法?

作为程序员,难免要和数据库打交道,一般情况下,我们不是DBA ,但是又要写很多SQL,因此SQL效率就成了很大的问题。关于SQL效率优化,除了要掌握一定优化技巧外, 还得有很多经验的积累,但是这里我们可以通过执行计划对SQL进行分析,能快速找到优化的地方,这是一种很不错的方式

1.查看mysql执行计划
explain  select ......
2.执行计划包含的信息
Column Meaning
id	The SELECT identifier
select_type	The SELECT type
table	The table for the output row
partitions	The matching partitions
type	The join type
possible_keys	The possible indexes to choose
key	The index actually chosen
key_len	The length of the chosen key
ref	The columns compared to the index
rows	Estimate of rows to be examined
filtered	Percentage of rows filtered by table condition
Extra	Additional information

(1).id
含义,指示select字句或操作表的顺序。
(2).select_type
含义:select语句的类型
(3).type
含义:获取记录行采用的方式,亦即mysql的访问方式。
(4).possible_keys
含义:指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
(5).key
含义:显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
(6)key_len
含义:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
(7)ref
含义:用于连接查询,表示具体某个表的某列被引用
(8)rows
含义:MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数,这个值是不准确的,只有参考意义。
 (9)Extra
含义:显示一些辅助的额外信息

29.1000w 条数据,使用 limit offset 分页时,为什么越往后翻越慢?如何解决?

当一个数据库表过于庞大,LIMIT offset, length中的offset值过大,则SQL查询语句会非常缓慢,你需增加order by,并且order by字段需要建立索引。

如果使用子查询去优化LIMIT的话,则子查询必须是连续的,某种意义来讲,子查询不应该有where条件,where会过滤数据,使数据失去连续性。

如果你查询的记录比较大,并且数据传输量比较大,比如包含了text类型的field,则可以通过建立子查询。

30.什么是索引合并?

The Index Merge method is used to retrieve rows with several range scans and to merge their results into one. The merge can produce unions, intersections, or unions-of-intersections of its underlying scans. This access method merges index scans from a single table; it does not merge scans across multiple tables.

根据官方文档中的说明,我们可以了解到:
1、索引合并是把几个索引的范围扫描合并成一个索引。
2、索引合并的时候,会对索引进行并集,交集或者先交集再并集操作,以便合并成一个索引。
3、这些需要合并的索引只能是一个表的。不能对多表进行索引合并。
posted @ 2019-10-22 22:10  小猿取经-林海峰老师  阅读(559)  评论(0编辑  收藏  举报