当前位置: 首页 > news >正文

帝舵手表官方网站网站做支付按流量付费

帝舵手表官方网站,网站做支付按流量付费,天津室内设计公司排行,网站备案号查询系统1.mysql体系结构 1) 连接层 主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作…

1.mysql体系结构

1) 连接层

主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

2) 服务层

第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

3) 引擎层 [存储引擎]

数据存储层, 主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。 在之前[MyISAM]: MySQL5.5之后,MySQL默认的存储引擎就是InnoDB,InnoDB默认使用的索引结构就是B+树,上面的服务层就是通过API接口与存储引擎层进行交互的

4)存储层

和其他数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

2.mysql引擎

MySQL5.5之前的默认存储引擎是MyISAM,5.5之后就改为了InnoDB。

InniDB支持事务,行级锁,外键

mylSAM  不支持事务和外键,支持表级锁

InnoDB存储引擎是Mysql的默认存储引擎。InnoDB存储引擎提供了具有提交、回滚、崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

3.存储过程

MySQL 中的存储过程是一种预编译的 SQL 脚本,它可以存储在数据库服务器上,并通过一个名称来调用。存储过程可以在数据库级别上封装一组复杂的操作,这样可以简化客户端应用程序与数据库之间的交互,并且可以提高性能和安全性。

1.创建存储过程

CREATE PROCEDURE te01()
BEGIN
  SELECT 'hello';
END;

调用
call te01();

2.删除

DROP PROCEDURE te01;

3.定义变量

create PROCEDURE te02()
BEGIN
  declare num int default 5;
  SELECT num + 20;
END;
call te02();


4.直接赋值使用 SET

CREATE PROCEDURE te03()
BEGIN 
 DECLARE num int DEFAULT 1;
 set num=10;
 SELECT num;
 END;
 CALL te03();

5.通过select ... into 方式进行赋值操作

CREATE PROCEDURE te04()
BEGIN
  DECLARE num VARCHAR(20);
  SELECT city_name into num from city_innodb WHERE city_id=1;
  SELECT num;
  END;
  call te04();

6.if条件判断

CREATE PROCEDURE ce03(in m int,out result VARCHAR(200))
BEGIN
  if m in (1,3,5,7,8,10,12) then set result='31天';
  ELSEIF m=2 then set result='28天';
  ELSE set result='30天';
  end if;
END;
call ce03(2,@r);
SELECT @r;

7.case

CREATE PROCEDURE te08(in n int)
BEGIN
 CASE 
    WHEN n in (1,3,5,7) THEN
        SELECT '奇数';
   WHEN n in (2,4,6,7) THEN
        SELECT 'o数';
    ELSE
        SELECT '输入错误';
END CASE;
END;
call te08(5);

8.while

CREATE PROCEDURE te09(in n int,out sum INT)
BEGIN 
  set sum=0;
  WHILE n>=1 DO
    set sum=sum+n;
  set n=n-1;
END WHILE;
END;
call te09(100,@sum);
SELECT @sum;

9.repeat 类似do{}while

CREATE PROCEDURE te10(in n int,out sum int)
BEGIN
  set sum=0;
  REPEAT
    set sum=sum+n;
  set n=n-1;
UNTIL n=0 END REPEAT;
END;
CALL te10(100,@sum);
SELECT @sum;
 

4.索引

索引它就是一种数据结构,可以帮mysql快速查找到相应的数据。

一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。索引是数据库中用来提高性能的最常用的手段

4.1索引优势劣势

4.2索引结构

不同的数据库引擎使用的索引结构不同,一般多用B+树

  • B+TREE 索引 : 最常见的索引类型,大部分引擎都支持 B 树索引。

  • HASH 索引:只有Memory引擎支持 , 使用场景简单 。

  • Full-text (全文索引) :全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从Mysql5.6版本开始支持全文索引。

4.3二叉树,红黑树,B+树

二叉树的缺点:顺序插入时,会形成一个链表,查询性能大大降低,在大量数据的情况下层级较深,检索速度慢

红黑树:大量数据的情况下,层级较深,检索速度慢

B树,采用多路平衡,每个节点既存放索引又存放数据

B+树,根节点只存放索引,所有数据都存放在中叶子节,并且叶子节点会形成一个双链表,方便范围内查找,且查找效率比较稳定

4.4索引分类

按索引字段的特性分类 

普通索引   

  • 即一个索引值包含单个列。一个表可以有多个单例索引

唯一索引

  • 与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值

主键索引    它是一种特殊的唯一索引,不允许有空值

联合索引(多列索引,组合索引,复合索引)

  • 一个索引包含多个列,专门用于组合搜索,其效率大于索引合并

全文索引

按索引的存储形式

聚集索引        将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据
必须有,而且只有一个
二级索引        将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键
可以存在多个

索引的语法

create index 索引名[name_index] on 表名(name)

type索引类型 

system :根据主键索引

const::根据唯一索引

eq_ref和ref:根据普通索引

range:索引范围查询

index和all:没有索引查询

平常的到达了range即可,尽量到ref

如何分析sql

explain  一般查看哪些指标:type索引类型key:实际使用的索引key_len索引的长度row:影响得到行数

索引失效的场景:

1.使用联合索引时必须满足最左前缀法则

从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的字段索引失效)。

2.使用联合索引时,某个字段进行了范围查询,它的右侧索引会失效(创建索引时的顺序)

3.索引运算,索引列上有运算操作的话会失效

4.字符串索引类型的字段查询时没有使用 ' '

5.模糊查询,尾部模糊索引不会失效,头部模糊会失效

6.or  连接了一个索引字段,or后面的字段没有索引则导致索引字段也会失效

7.覆盖索引

查找的条件和需要的数据都能在索引中找到,不需要再回表

5.锁

5.1锁的分类

从对数据操作的粒度分 :

1) 表锁:操作时,会锁定整个表。MyISAM 5.6 后InnoDB支持

2) 行锁:操作时,会锁定当前操作行。Innodb

从对数据操作的类型分:

1) 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。

2) 写锁(排它锁):当前操作没有完成之前,它会阻断其他写操作和读操作。

MySQL这2种锁的特性可大致归纳如下 :

锁类型特点
表级锁偏向MyISAM 存储引擎,开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁偏向InnoDB 存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

5.2mylsam表锁

MyISAM 存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。

MyISAM 在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT 等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用 LOCK TABLE 命令给 MyISAM 表显式加锁。 但是我们为了演示出效果人为加锁。

显示加表锁语法:

加读锁 : lock table table_name read; 

加写锁 : lock table table_name write;--- insert delete updpate

释放锁:   unlock tables; -- 执行完毕

5.3InnoDB 行锁

行锁特点 :偏向InnoDB 存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

InnoDB 与 MyISAM 的最大不同有两点:一是支持事务;二是 采用了行级锁。

InnoDB 实现了以下两种类型的行锁。

  • 共享锁(S):又称为读锁,简称S锁,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。

  • 排他锁(X):又称为写锁,简称X锁,排他锁就是不能与其他锁并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。

    当执行修改操作,默认innodb就会给数据库表中对应的行加排他锁

对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁(X);

对于普通SELECT语句,InnoDB不会加任何锁;

行级锁:

分成: 共享锁: 执行select时会自动添加该锁。 不影响其他的操作。

        排他锁: 执行更新操作时自动添加该锁。影响其他事务的更新操作

5.3.2悲观锁和乐观锁

悲观锁:

乐观锁: 增加一个version字段,---一个事务进行操作时,该事务会先获取version的值。当这个事务操作完成后,查看数据库中的version字段值是否和当前自己家拥有的version字段的值相同。如果相同则修改成功并对version+1,如果不同则不修改。

http://www.dtcms.com/a/481234.html

相关文章:

  • 自己做本地视频网站家具在线设计平台
  • 网站域名查ip如何做跨境电商
  • 一号建站苏州关键词排名提升
  • 学商务网站建设的感想登封网络推广
  • 校园微网站建设方案电子图书网站建设
  • 网站app的意义wordpress福利博客
  • 惠州做棋牌网站建设多少钱户外广告
  • 网站建设费与无形资产微信公众号优秀文案
  • 免费手机建站平台建设和管理环保网站
  • 怎么做网站信息免费咨询医院
  • 接给别人做网站的活做茶歇的网站
  • 用hexo做网站网站别人帮做的要注意什么
  • 网站seo优化网站前端培训出来工资多少
  • 上海公司注册网seo综合查询国产
  • 推广项目网站网站设计步骤图片
  • 淄博网站推广优化有限责任公司属于什么法人
  • 移动网站 pc网站的区别免费wordpress移动主题
  • 惠山区住房和建设厅网站免费推广网站哪家好
  • 好的网站建站公司做网站软件j
  • 山东省济宁市嘉祥县建设局网站WordPress建站布置
  • 怎么管理网站西安效果图制作
  • 新网建立网站网站建设 自学 电子版 pdf下载
  • 深圳专业网站建设制作企业招聘信息发布平台
  • 不得不知道的网站门户网站制作全包
  • 玄圭做网站怎么样wordpress怎么关闭网站
  • 网站app怎么制作教程集团网站设计公司
  • 棋牌网站开发工程师附近做网站
  • p2p网站建设时间制作公司网站用什么软件
  • 网站模块报价龙岩网页定制
  • 设计兼职网站推荐怎么建设好一个外贸购物网站