mysql初识

news/2024/4/29 4:07:32/文章来源:https://www.cnblogs.com/cuijy1/p/16271962.html

mysql需要了解哪些知识

1.sql操作

2.索引 索引原理 索引优化 sql语句优化

3.事务 并发读异常的问题 并发死锁怎么解决

4. mysql与缓存 解决读性能问题 集群的内容

 

OLTP:

OLTP(online transaction processing)翻译为联机事务处理;主要对数据库增删改查;
OLTP主要用来记录某类业务事件的发生;数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功;后端开发主要使用的事OLTP

OLAP:

OLAP(On-Line Analytical Processing)翻译为联机分析处理;主要对数据库查询;
当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做OLAP了;

SQL:

定义:

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是关系数据库系统的标准语言。
关系型数据库包括:MySQL, SQL Server, Oracle, Sybase, postgreSQL 以及 MS Access等;
SQL命令包括:DQL、DML、DDL、DCL以及TCL;

DQL:

Data Query Language - 数据查询语言;
select :从一个或者多个表中检索特定的记录;

DML:

Data Manipulate Language - 数据操作语言;
insert :插入记录;
update :更新记录;
delete :删除记录;

DDL:

Data Define Languge - 数据定义语言;
create :创建一个新的表、表的视图、或者在数据库中的对象;
alter :修改现有的数据库对象,例如修改表的属性或者字段;
drop :删除表、数据库对象或者视图

DCL:

Data Control Language - 数据控制语言;
grant :授予用户权限;
revoke :收回用户权限;

TCL:

Transaction Control Language - 事务控制语言;
commit :事务提交;
rollback :事务回滚;
 

MySQL体系结构

 

MySQL由以下几部分组成:
连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储引擎、物理文件。
开启多个连接也会影响数据库的效率
 

 连接者:

不同语言的代码程序和mysql的交互(SQL交互);

连接池:

管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求;
网络处理流程:主线程接收连接,接收连接交由连接池处理;
主要处理方式:IO多路复用select + 阻塞的io
需要理解:MySQL命令处理是并发处理的;

 

数据库主线程只关注读 事件,只监听listenfd,连接的事件。MySQL采用的阻塞的IO,因为mysql需要访问磁盘,重IO,是同步的。redis采用的reactor异步的。mysql只支持150左右的连接,连接数量多会影响性能。

主线程负责接收客户端连接,然后为每个客户端 fd 分配一个连接线程fd是阻塞的,负责处理该客户端的 sql命令处理;  
1.词法句法分析,对象权限验证,制定执行计划与路径,缓存由引擎操作,如果需要查找的在buffer中存在,就从buffer中取,否则访问磁盘。
流程:sql是个语言,首先做词法句法分析(SQL Interface),对象的权限验证,过滤(parser),优化执行路径,根据索引(optimizer),缓存
存储引擎是描述表的。

管理服务和工具组件:

系统管理和控制工具,例如备份恢复、Mysql复制、集群等; 

SQL接口:

将SQL语句解析生成相应对象;DML,DDL,存储过程,视图,触发器等;
查询解析器
SQL对象交由解析器验证和解析,并生成语法树;
查询优化器
SQL语句执行前使用查询优化器进行优化;
缓冲组件
是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影响;在数据库进行读取页操作,首先将
从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲池中,若在缓
冲池命中,直接读取;否则读取磁盘中的页,说明该页被LRU淘汰了;缓冲池中LRU采用最近最少
使用算法来进行管理;
缓冲池缓存的数据类型有:索引页、数据页、以及与存储引擎缓存相关的数据(比如innodb
擎:undo页、插入缓冲、自适应hash索引、innodb相关锁信息、数据字典信息等);
 
mysql中有三种条件语句:
1.select *from table  where condition;
普通用where
2.group by column having condition;
分组用having
3.join table on condition;
联表用on
innoDB才有外键,
 
 
 
 
管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求;
网络处理流程:主线程接收连接,接收连接交由连接池处理;
主要处理方式:IO多路复用select + 阻塞的io
需要理解:MySQL命令处理是并发处理的;
 
数据库的三范式:
1.确保每列保持原子性;数据库表总的所有字段都是不可分解的原子值;
2.确保表中的每列都和逐渐相关,而不能只与主键的一部分相关。
3.确保每列都和逐渐直接相关,不是间接相关;减少数据冗余。
反范式:
如果重复数据相对较少,并且经常被查询。
 
 
删除表数据:
truncate:截断表,以页为单位(至少有两行数据),有自增索引的话,从0开始。
delete:逐行删除,有自增索引的话,从之前值继续累加。
 
有几种条件语句:
1.select * from table where condition;  :筛选
2.group by 列名 having condition;   :分组
3. ...join table on condition;    :联表
条件判断中尽量选择索引。索引是帮助我们快速查询数据的。
 
去重:
select distinct 列名 from table
group by 
 
合并
group_concat  通常与group by联合用
 
聚合函数 (列)
sum()
avg()
max()
min()
count(0
 
 
判空查询:
即使条件是索引, 判空时也不会走索引,... where class_id is not null;
is null 会造成索引失效;
 
 
 
模糊查询
使用like关键字, %代表任意数量字符, _代表占位符
 
分页查询
分页查询主要查看第N条到第M条信息,通常和排序一起。速度快。
 
OLTP读次数大约是 写的10倍左右,因此要解决读的性能
 
为什么innodb需要主动创建主键索引,并且以自增的整数作为主键?
 
 

 

 1.select column from tableA left join tableB on A.key = B.key;

2.select column from tableA inner join tableB on A.key = B.key;

3.select column from tableA right join tableB on A.key = B.key;

4.select column from tableA left join tableB on A.key = B.key where B.key is null;

5.select column from tableA right join tableB on A.key = B.key where A.key is null;

6.select column from tableA full outer join tableB on A.key = B.key;

7.select column from tableA full outer join tableB on A.key = B.key where A.key is null or B.key is null;

where B.key is null

 

 

 

编写sql语句时,首先把功能拆分,然后再聚合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2343.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5个必知的高级SQL函数

5个必知的高级SQL函数SQL是关系数据库管理的标准语言,用于与数据库通信。它广泛用于存储、检索和操作数据库中存储的数据。SQL不区分大小写。用户可以访问存储在关系数据库管理系统中的数据。SQL允许描述数据。用户可以轻松创建和删除表和数据库。我们可以使用SQL库、模块和预…

Golang基础教程

以下使用goland的IDE演示,包含总计的golang基础功能共20个章节 一、go语言结构: 二、go基础语法:三、变量四、常量五、运算符 六、条件语句 七、循环 八、函数 九、变量作用域 十、数组 十一、指针 十二、结构体 十三、切片 十四、范围(Range) 十五、集合 十六、递归 十七、…

ceph 009 管理定义crushmap 故障域

管理和自定义crushmap 定义pg到osd的映射关系 通过crush算法使三副本映射到理想的主机或者机架 更改故障域提高可靠性 pg到osd映射由crush实现下载时需要将对象从osd搜索到,组成文件,那么对象多了就会效率变低,那么从pg组里面搜索。提高效率 对象放在pg要通过hash算法 95个…

网络编程-TCP通信程序(下)代码

TCP通信的客户端:向服务器发送连接请求,给服务端发送数据,读取服务端回写的数据 表示客户端的类:java.net.Socket:该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。套接字:包含了IP地址和端口号的网络单位 构造方法: Socket(String host, …

IfcDocumentInformation

IfcDocumentInformation实体定义 IfcDocumentInformation捕获外部文档的“元数据”。本规范未定义文件的实际内容;相反,它可以在Location属性之后找到。可以使用IfcDocumentReference从交换结构中全部或部分引用相同的IFCDocationInformation(例如,通过引用特定章节或段落)…

Volatile介绍

介绍 volatile 是 Java 虚拟机提供的轻量级的同步机制,它可以保证可见性(缓存一致性协议)和有序性(禁止指令重排序,也就是通过内存屏障来实现),但是不保证原子性。JMM 介绍 JMM 是一个抽象的概念,它描述的是一种规范。这些规范定义了程序中各种变量的访问规则。 JMM 定…

monodepth2学习-KITTI数据集内容

KITTI数据集介绍 monodepth2采用KITTI数据集进行训练,KITTI数据集主要是针对自动驾驶领域的图形处理技术,主要应用在评测立体图像(stereo)、光流(optical flow)、3D物体检查等计算机视觉领域。KITTI数据集采用配备有两个灰度摄像头,两个彩色摄像头和一个Velodye 64激光雷…

代码审计-PHP反序列化漏洞

什么是序列化序列化可以实现将对象压缩并格式化,方便数据的传输和存储。 为什么要序列化? PHP 文件在执行结束时会把对象销毁,如果下次要引用这个对象的话就很麻烦,所以就有了对象序列化,实现对象的长久存储,对象序列化之后存储起来,下次调用时直接调出来反序列化之后就…

世事无常,人生有定,此乃时也、运也、命也

参考: https://www.163.com/dy/article/H6NVOULE0528OPI5.html“万般皆由命,半点不由人。”半生已过,红尘辗转,才真正明白人的寿命与财富,在你来到人世间的那一刻上天就安排好了,半点由不得我们自己。正所谓“世事无常,人生有定,此乃时也、运也、命也!” 所谓命者。先…

三次握手,四次挥手

三次握手 连接建立阶段: 第一次握手:客户端的应用进程主动打开,并向服务端发出请求报文段。其首部中:SYN=1,seq=x。 第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文,其首部中:SYN=1,ACK=1,ack=x+1,seq=y。 第三次握手:客户端收到确认报文之后…

操作系统学习笔记4 | CPU管理 多进程图像

操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核心图像。操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进…

Hadoop十九

HDFS API操作在Windows上操作hadoop,需要添加hadoop依赖,我的hadoop是3.3.1版本的,我用的依赖是3.2.0的,需要配置环境变量 PATH添加如下路径: 然后双击依赖中的一闪而过就是成功的。 在maven项目中添加如下依赖<dependencies><!-- https://mvnrepository.com/a…

框架-逻辑层(逻辑层简介和注册程序)

逻辑层简介 小程序逻辑层 小程序开发框架的逻辑层是使用JavaScript编写的。 逻辑层将数据进行处理后发送给视图层,同时接收视图层的事件反馈。 在 JavaScript 的基础上,微信做了一些修改,以方便地开发小程序。增加 App 和 Page 方法,进行程序和页面的注册。 增加 getApp和g…

德飞莱 C51 学习笔记

《电子元件基础教程》 :数字集成电路 从结构上分为 : TTL 型 和 CMOS 型 《跟我学数字电子技术》: 数字电路分为 组合逻辑电路 和 时序逻辑电路

golang中GOPATH、GOROOT、GOBIN不生效等相关问题

比较重要的三个配置:GOPATH、GOROOT、GOBIN GOPATH : go项目开发的工程目录 GOROOT: go安装所在的目录 GOBIN: go项目编译完二进制程序目录 不生效问题,其实应该好好检查是否上面相关路径配置是否正确 编辑vim ~/.bash_profile 添加以下3个配置export GOROOT="/usr/loca…

高性能服务器之事件处理模式

I/O模型 对于一个套接字上的输入操作,通常存在以下两个步骤:等待分组到达,被复制到内核缓冲区中 将数据从内核缓冲区复制到应用进程的缓冲区中对于上述过程,在 Unix 下有 5 中基本的 I/O 模型可以对其进行处理:阻塞式 I/O 非阻塞式 I/O I/O 复用 信号驱动 I/O 异步 I/O1. …

算法总结

1.每日温度题(一道关于栈的问题) 请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 输入: temperatures = [73,74,75,71,69,72,76,73] 输出…

国内可使用chatGPT的十三种方式

国内AI 1. 开放猫 Chat机器人https://mirrorchat.extkj.cn/ chat机器人&#xff1a; Chat机器人https://mirrorchat.extkj.cn/ 3.免费学习测试 免费学习测试https://chat.wuguokai.cn/#/chat/1683348236237 4.AI文本工具站 AI文本工具站一个用于提高工作效率的文本工具网站,应用…

ChatGPT Plus用户专享:86款高效功能插件,详尽安装与使用全攻略

在前天的文章中&#xff0c;我们介绍了 ChatGPT 开放的全新模式 Web Browsing&#xff08;网页浏览&#xff09;&#xff0c;启用后 ChatGPT 就可以开始上网&#xff0c;收集最新的互联网资料进行作答。 其他关于chatgpt使用方面&#xff1a;请访问&#xff1a; 链接&#xf…