Java之MySQL

news2024/9/23 11:15:52

1、数据库三大范式

每个字段不可再分,不冗余

非主键字段完全依赖于主键

2、drop 删除整张表,不可回滚;delete删除部分数据行;truncate保留表 删除所有数据

3、innodb存储引擎 支持行级锁、表级锁  支持事务 支持异常奔溃后的安全恢复

4、mysql日志文件

错误日志  记录MySQL的启动、运行和关闭过程中的错误信息

慢查询日志  可以帮助开发人员和DBA分析和优化执行效率较低的查询语句,以提升数据库性能

二进制日志 以文本形式的二进制文件存储   记录数据库的所有DDL(数据定义语言)和DML语句(数据操作语言),但不包括SELECT语句。二进制日志以二进制格式记录,可以用于数据恢复、主从复制以及数据变更的回放

重做日志(Redo Log)提交事务的持久化数据  当事务提交时,相关的修改操作会首先被记录到重做日志中,然后才会写入磁盘     是指在数据库的最小存储单元(数据页)上发生的字节级别的变化
回滚日志(Undo Log) 事务原子性,支持事务回滚

5、sql优化

慢sql监控 慢查询日志、服务监控

直接在 select 语句之前增加 explain 关键字,就会返回执行计划的信息
 

优化思路——sql语句+数据库设计

避免不必要的列   slect *(尽量避免)

分页优化 回表 是指在使用索引查询时,MySQL 需要回到主表以获取完整的数据行的操作

索引优化 覆盖索引

join优化 尽量使用join语句来替代子查询

6、索引创建的注意点

 建在频繁查询的字段上,不建议建在频繁更新的字段上,要对哪些区分度高的字段建立索引,同时控制索引的数量,创建组合索引而不是修改单列索引

7、B+树的特点

非叶子节点只存储键值,指引搜索方向

叶子节点存储实际的数据

叶子节点之间使用双向指针连接,形成有序链表,方便范围查询和排序

高度相对较低,可以减少I/O操作,提升查询性能

平衡二叉树可是每个节点只存储一个键值和数据的   B+ 树,可以存储更多的节点数据,树的高度也会降低,因此读取磁盘的次数就降下来啦,查询效率就快

B+树的内部节点只存储关键字,而B树的内部节点需要同时存储关键字和数据。由于B+树内部节点只存储关键字,可以容纳更多的关键字,从而提高了存储容量

B+树的叶子节点形成一个有序链表,使得范围查询操作更加高效。而B树的叶子节点不一定是有序的,需要进行额外的操作才能进行范围查询,更适应范围查询

8、聚簇索引和非聚簇索引

数据存储方式

聚簇 将数据存储与索引放到了一块,非聚簇索引是将数据和索引分开存储,存储了指向数据行的指针

覆盖索引   不管是单列索引还是联合索引,如果 select 的数据列只用辅助索引中就能够取得,不用去查主键索引,这时候使用的索引就叫做覆盖索引

最左匹配原则  在联合索引中,如果查询语句只使用了联合索引的一部分,那么只有从最左边的索引开始匹配,才能使用该索引进行查询
9、mysql事务

原子(undo log)
持久(Redo Log)

隔离  并发控制机制(锁 多版本并发控制)

MySQL的事务有四个隔离级别

  • 读未提交——脏读
  • 读已提交——不可重复读(针对修改操作,相同查询条件返回不同的结果)
  • 默认隔离级别——可重复读——幻读(在同一个事务中,由于其他事务的插入或删除操作,对相同的查询条件可能返回不同的结果。)
  • 串行化——牺牲并发性能

MVCC  用于解决并发访问下的读一致性问题

  • 每个记录都有一个版本链,用于存储历史版本信息
  • 每个事务都有一个唯一的事务ID
  • 在更新记录时,将当前事务的ID和回滚指针写入新版本,并将新版本添加到版本链的头部。
  • 在读取记录时,生成当前事务的Read View,并根据Read View判断哪个版本可见
  • 当前事务只能看到在其生成Read View之前已提交的版本和当前事务自己修改的版本。

一致

10、分库分表

垂直分库  业务归属

水平分库


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拓普壹的选品师项目怎么操作更好?

在拓普壹的选品师项目中,成功的关键在于精细化的操作和系统化的策略。这不仅要求选品师具备深厚的自身能力,还需要明智的选择平台和有效利用新技术。本文将从这三个方面探讨如何更好地操作拓普壹选品师项目。 1. 自身能力培养 选品师的核心任务是从众多商…

SPRING07_自动装配如何加强、@Autowired注解debug分析、总结

文章目录 ①. Spring启动一行代码:②. ApplicationContex增强功能③. 自动装配如何装配进来④. Autowired自动注入细节xml版⑤. Autowired注解版分析⑥. 总结一下 ①. Spring启动一行代码: ①. 创建一个IOC容器,传入容器的xml配置文件,Spring在整个创建容器的过程中全部都准备…

Docker安装达梦数据库详细教程

达梦数据库(DM,Dameng Database)是中国自主研发的关系型数据库管理系统。它由武汉达梦数据库有限公司开发,最早可以追溯到1982年,至今已有几十年的发展历史。达梦数据库在中国市场上具有较高的知名度和市场占有率,特别是在政府、金融、电信、能源等行业有广泛的应用。 自…

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看 我将以最简单,基础的形式说明神经网络的训练过程。 搭配以下文章进行学习: 深度学习——卷积神经网络&#xf…

Day18 Linux系统编程学习--文件

文件 (file) 是程序设计中一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为 AS…

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。

【森气随笔】python绘图找不同,揭秘不同函数绘图差异。 准备了两组图片,运用了不同绘图函数绘制。然而,令人无语的是,有人竟直言不讳地表示难以察觉其中的差别。非常好奇,是差异太小还是不愿意承认呢?感兴趣…

Linux-服务器硬件及RAID配置实验

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 8.Linu…

利用shell脚本一键查询ceph中bucket桶的占用大小

在 Ceph 对象存储中(例如使用 RADOS Gateway 提供的 Swift 或 S3 接口),你可能需要了解某个桶(bucket)的占用大小。 以下是如何在 Ceph 中查看桶的占用大小的方法: 1. 使用 radosgw-admin 工具 radosgw-a…

2024最新整理Python基础知识点汇总(可下载)期末复习必备!

前言 由于篇幅限制,我把所有的Python基础知识点和实战代码全部打包上传至CSDN官方认证的微信上,需要的同学可以自取!下载保存在你自己的电脑上(保证100%免费) 1 变量和简单数据类型 变量命名格式:变量名 …

Linux-Shell管道命令及脚本调试-06

上一章我们讲了一半的管道命令,今天把剩下的讲完 1、管道命令 字符转换命令 tr, col, join, paste, expand 1.1 tr 一种可将字符进行替换、压缩、删除,可以将一组字符转换成另一组字符 格式; tr [-parameter] [string1] [string2] 参数: 参数说…

vs2019 QtConcurrent多线程使用方法

QtConcurrent::run(xxx) 1.打开QT Project Setting-》点击Qt Modules 2.头文件包含&#xff1a; #include <QtConcurrent/QtConcurrent> 3.使用方法&#xff1a; QFuture<void> future1 QtConcurrent::run(this, &auto_pack_line_demo::UpdateVisionComm)…

漏洞复现-Apache Kafka Clients JNDI注入漏洞 (CVE-2023-25194)

1.漏洞描述 Apache Kafka 是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。 在版本3.3.2及以前&#xff0c;Apache Kafka clients中存在一处JNDI注入漏洞。如果攻击者在连接的时候可以控制属性sasl.jaas.conf…

今是科技携手福瑞莱,共筑环境微生物检测技术创新与发展

近日&#xff0c;成都今是科技有限公司&#xff08;以下简称“今是科技”&#xff09;与福瑞莱环保科技&#xff08;深圳&#xff09;股份有限公司&#xff08;以下简称“福瑞莱”&#xff09;正式宣布达成深度战略合作。此次合作旨在将双方的优势资源与技术力量相结合&#xf…

再见,Midjourney | FLUX 彻底改变了 AI 图像游戏

Flux 刚发布一周&#xff0c;大家都疯了&#xff01; 因为真的是分不清是AI还是真实啊&#x1f3f4;‍☠️ Flux生成 Flux生成 FLUX 彻底改变了 AI 图像游戏。 02 黑深林 Black Forest Labs由Stable Diffusion模型的原班人马创立&#xff0c;旨在开发并开源高质量的图像和…

无字母数字_$ webshell之命令执行

题解分析&#xff1a; 代码案例 当然&#xff0c;这道题的限制&#xff1a; webshell长度不超过35位 不包含字母数字&#xff0c;还不能包含$和_ 所以&#xff0c;如何解决这个问题&#xff1f; shell下可以利用.来执行任意脚本 Linux文件名支持用glob通配符代替 第一点.…

Java语言程序设计基础篇_编程练习题**16.19(控制一组风扇)

**16.19&#xff08;控制一组风扇&#xff09; 编写一个程序&#xff0c;在一组中显示三个风扇&#xff0c;有控制按钮来启动和停止整组风扇&#xff0c;如图16-44所示。 习题分析 要完成这道题目&#xff0c;需要将16.18中的代码变成一个自定义面板(继承自BorderPane)&#…

考研概率论如何复习最高效?能拿满分

概率论跟哪写老师的课程&#xff1f; 推荐三个老师&#xff1a; 喻老&#xff1a;基础讲的很好 喻老的线性代数课在今年已经非常有名&#xff0c;但其实他讲授的概率论课程同样十分出色。喻老的课程特点在于讲解非常细致&#xff0c;特别适合基础较为薄弱的学生。此外&#…

MySQL练手题——case when ... then ...

一、准备工作 Create table If Not Exists Seat (id int, student varchar(255)); Truncate table Seat; insert into Seat (id, student) values (1, Abbot); insert into Seat (id, student) values (2, Doris); insert into Seat (id, student) values (3, Emerson); inser…

spark3.3.4 上使用 pyspark 跑 python 任务版本不一致问题解决

问题描述 在 spark 上跑 python 任务最常见的异常就是下面的版本不一致问题了&#xff1a; RuntimeError: Python in worker has different version 3.7 than that in driver 3.6, PySpark cannot run with different minor versions. Please check environment variables PY…

PLM软件选型攻略:10款推荐工具全面解析

本篇文章中提到的工具包括&#xff1a;PingCode、Worktile、云效、目标圈&#xff08;Goal Circle&#xff09;、Mavenlink、SAP PLM、Basecamp、Scoro、明道云、Airtable。 在现代企业管理中&#xff0c;选择合适的PLM&#xff08;产品生命周期管理&#xff09;系统对提升产品…