我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL入门(二)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL入门(二)

MySQL入门(二)

 

 

1.  MySQL架构

1.1         逻辑架构图

1.1.1   Connection Pool: 连接池

* 管理缓冲用户连接线程处理等需要缓存的需求。

* 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。

* 连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。

1.1.2   Parser: 解析器

* SQL命令传递到解析器的时候会被解析器验证和解析

主要功能:

         a . SQL语句进行语义和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。

         b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的

1.1.3   Optimizer: 查询优化器

* SQL语句在查询之前会使用查询优化器对查询进行优化

*      它使用的是“选取-投影-联接”策略进行查询。

     用一个例子就可以理解: select uid,name from user where gender = 1;

* 这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行过滤

* 这个select查询先根据uidname进行属性投影,而不是将属性全部取出以后再进行过滤

* 将这两个查询条件联接起来生成最终查询结果

1.1.4   CacheBuffer 查询缓存

他的主要功能是将客户端提交给MySQL select请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值 做一个对应。该 Query 所取数据的基表发生任何数据的变化之后, MySQL 会自动使该 query Cache 失效。在读写比例非常高的应用系统中, Query Cache 对性能的提高是非常显著的。当然它对内存的消耗也是非常大的。

如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

 

1.1.5   存储引擎接口

存储引擎接口模块可以说是 MySQL 数据库中最有特色的一点了。目前各种数据库产品中,基本上只有 MySQL 可以实现其底层数据存储引擎的插件式管理。这个模块实际上只是 一个抽象类,但正是因为它成功地将各种数据处理高度抽象化,才成就了今天 MySQL 可插拔存储引擎的特色。

注意:存储引擎是基于表的,而不是数据库。

1.2   MySQL的存储引擎

* 多存储引擎是mysql有别于其他数据库的一大特性;

* 存储引擎是针对表的

* MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB

* MySQL引擎: 可以理解为,MySQL文件系统,只不过功能更加强大。

* MySQL引擎功能: 除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。

* 查看存储引擎:show engines;

 

Innodb

Myisam

存储文件

.frm 表定义文件

.ibd 数据文件

.frm 表定义文件

.myd数据文件 .myi 索引文件

表锁、行锁

表锁

事务

ACID

不支持

CRDU

读、写

读多

count

扫表

专门存储的地方

索引结构

B+ Tree

B+ Tree

1.3   MySQL物理结构

1.3.1   日志文件

MySQL通过日志记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和 InnoDB 引擎在线 Redo 日志、中继日志等。

错误日志(error log):记录mysql服务器mysqld在启动/关闭或运行过程中遇到的错误信息。(默认是开启的,而且从5.5.7以后无法关闭错误日志)

查询日志(query log):

普通查询日志(general query log):记录客户端连接信息和执行的sql语句信息。(默认情况下通用查询日志是关闭的。)

慢查询日志(slow query log):记录执行时间超出指定值(long_query_time)sql语句。(默认是关闭的。需要通过设置:slow_query_log=ON进行开启。)

二进制日志(binary log):记录数据被修改的相关信息。(默认是关闭的,需要通过配置:log-bin=mysql-bin进行开启)

在配置文件中进行配置各日志路径

1.3.2   数据文件

查看MySQL数据文件:SHOW VARIABLES LIKE ‘%datadir%’;

l  .frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息

l  .ibd.ibdata文件:用来存储InnoDB存储引擎表数据和索引信息

l  .myd文件:主要用来存储使用MyISAM存储引擎的表数据信息

l  .myi文件:主要用来存储使用MyISAM存储引擎的表数据文件中任何索引的数据树。

2.  MySQL索引

一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nickname="css"的数据,是不是感觉性能提升了好多咧....

mysql的索引分为单列索引(主键索引,唯一索引,普通索引)组合索引.

单列索引:一个索引只包含一个列,一个表可以有多个单列索引.

组合索引:一个组合索引包含两个或两个以上的列,

2.1   索引的创建

2.1.1  单列索引

1.      普通索引,这个是最基本的索引

sql格式是 :

CREATE INDEX IndexName ON `TableName`(`字段名`(length))

或者

ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length))

2.      唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,

sql格式是 :

CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length));

或者 

ALTER TABLE TableName ADD UNIQUE (column_list)  

3.      主键索引,不允许有空值,(B+TREE中的InnoDB引擎中,主键索引起到了至关重要的地位)

主键索引建立的规则是 int优于varchar,一般在建表的时候创建,最好是与表的其他字段不相关的列或者是业务不相关的列.一般会设为 int 而且是 AUTO_INCREMENT自增类型的

2.1.2  组合索引

一个表中含有多个单列索引不代表是组合索引,通俗一点讲 组合索引是:包含多个字段但是只有索引名称

sql格式是 :

  CREATE INDEX IndexName On `TableName`(`字段名`(length),`字段名`(length),...);

2.2   索引的删除

删除索引的mysql格式 :

  DORP INDEX IndexName ON `TableName`;

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL入门(二)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql入门(二)

MySQL数据库中相关概念介绍 1.字符集字符集:可见字符在保存和传输的时候,二进制的代码集合。字符集:1. 保存数据;2. 传输数据。1). MySQL可以在服务器上,数据库,表,字段上指定字符集 2). 服务器上在系统安装的时候就要指定3). 数据库,表和
mysql入门(二)
2019-07-23

MySQL入门(二)

1.  MySQL架构1.1         逻辑架构图1.1.1   Connection Pool: 连接池* 管理缓冲用户连接,线程处理等需要缓存的需求。* 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。
MySQL入门(二)
2015-12-15

Python入门 (二)

本文是个人python学习笔记,学习资料为廖雪峰python教程,如需更多内容,请移步廖老师官方网站。一 函数式编程Functional Programming函数式编程允许把函数本身作为参数传入另一个函数,还允许返回一个函数。Python
2023-01-31

Python入门篇(二)

1、Python模块### sys模块#!/usr/bin/python# _*_ coding:utf-8 _*_# Aothr: Kimimport sys #导入sys模块print (sys.path) #打印python环境变量p
2023-01-31

Oracle入门学习二

上一篇:Oracle入门学习一学习视频:https://www.bilibili.com/video/BV1tJ411r7EC?p=15算术运算符:+ - * /逻辑运算符:and or not比较运算符:“=”、“”、“=”、“”、“!=”。注意“=”是等于
Oracle入门学习二
2014-07-13

Python入门教程(二)

今天讲编程思维。  可能这对初次接触编程的人有用——我不是不想切入正题,我只是想强调根本没什么正题,我可能在其他文章里提过这一点。“编程语言就是语法糖”,可能你不知道什么是语法糖,但是知道的人也未必认同我。我不保证你们能听懂……python
2023-01-31

Mysql入门

一、数据库概述1、为什么要用数据库?程序中的数据是在内存中,一旦程序关了,数据就没了,没法永久保存。所以我们需要把数据“持久化”。我们虽然学过IO流和File类,可以实现数据的持久化,但是用普通的文件保存的话数据的格式检索、管理(增加、修改、删除)等操作及其不
Mysql入门
2014-06-01

Flask入门很轻松 (二)

转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/10959454.html在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:在请求开始时,建立数据库连接;在请求开始时,根据
2023-01-31

Oracle数据库入门(二)

Oracle SQL*Plus常用命令一、SYS用户和System用户Oracle安装会自动的生成SYS用户和System用户。1) SYS用户时超级用户,具有最高权限,具有SYSDBA角色,有CREATE DATABASE的权限,该用户默认的密码是chang
Oracle数据库入门(二)
2019-09-18

Python3快速入门(二)——Pyth

一、Python3语法基础1、Python3编码默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串,可以为Python源码文件指定不同的编码,如下:# -*- coding: utf-8 -*-2
2023-01-31

python3入门与进阶(二)

变量python3中变量的定义是不固定类型的(动态),区分大小写值类型引用类型不可变的(值类型)可变的(引用类型)int (整型)list (列表)str (字符串)set (集合)tuple (元组)dict (字典)通过内置函数id()
2023-01-31

mysql入门(一)

数据库介绍数据库是在计算机出现以后,为了解决计算机存储问题而创建,数据库中包含表,表当中才是数据。数据库的发展史1. 萌芽阶段所有存储依赖的都是文件,安全性低,查找非常困难。2. 层次模型1). 优点:查询分类的效率高;2). 缺点:导航结构:如果查找同类别数
mysql入门(一)
2019-10-16

mysql入门(五)

SQL编程1).if-elseif-else语句语法:if 条件 then //条件1elseif 条件 then //条件2else //条件3end if;示例演示:create procedure pro_9(in grade int)
mysql入门(五)
2016-01-30

Python3快速入门(十二)——Num

一、NumPy简介1、NumPy简介NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时对数组运算提供了大量的数学函数库。Numpy 是一个运行速度非常快的数学库,内部解
2023-01-31

MySQL入门(四)

1.  集群搭建之主从复制MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。1.1   主服务器的配置1.1.1   第一步:修改my.conf文件:在[mysqld]段下添加:#启
MySQL入门(四)
2014-08-05

mysql入门(三)

数据库查询操作关键字:selectselect   结果集   from   数据源   [where 条件]   [group by(分组)]   [having 条件]   [order by(排序) asc|desc]   [limit(限制) s,n]
mysql入门(三)
2022-01-02

python从入门到放弃(二)

ASCII码:主要用来显示英文和其他西欧语言,用8位来表示,也就是一个字节,最多只能显示256个符号UNICODE:也叫万国码,为了解决传统的字符编码方案的局限而产生的,它为每种语言的每个字符都设定了二进制编码,最少用16位来表示,也就是两
2023-01-31

前端基础入门二(CSS)

学习。大纲学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示模式熟练掌握CSS背景属性熟练掌握CSS三大特性熟练掌握CSS盒子模型熟练掌握CSS浮动10.熟练掌握CSS定位11
2023-06-03

编程热搜

目录