计算机包含哪些专业/孔宇seo

计算机包含哪些专业,孔宇seo,上海专业网站建设公司,wordpress的优点1. 如何定位慢查询? 慢查询一般发生在联表查询或者表中数据量较大时,当响应时间较长或者压测时间超过2s时,就认为是慢查询。定位慢查询的话一般有两种方法,一种是使用专门的分析工具去定位。另一种也是我们项目中之前使用过的方法…

1. 如何定位慢查询?

慢查询一般发生在联表查询或者表中数据量较大时,当响应时间较长或者压测时间超过2s时,就认为是慢查询。定位慢查询的话一般有两种方法,一种是使用专门的分析工具去定位。另一种也是我们项目中之前使用过的方法:MySQL自带的慢查询日志。想要想要使用自带的慢查询日志功能,需要在MySQL的配置文件中将慢查询日志的开关打开,即对应的字段的值置为1.其次需要给定一个上限值,当SQL语句的执行时常超过该值时,就会在日志中记录信息,记录的信息包括该条语句的执行时长以及这条语句具体的SQL代码。这样就可以准确定位到这条SQL语句从而进行优化。

 2. 如果一个SQL语句执行很慢,如何分析?

如果一条SQL语句执行很慢的话,一般就通过在查询语句前添加Explain关键字得到这条SQL语句对应的性能分析表格。其中该表格中有四个关键字段需要关注。首先是key和key_len字段,可以检查这条SQL语句是否命中了索引。如果没有命中,试着分析原因,可以通过添加索引或者其他手段使得其根据索引去查询;其次是type字段可以反应这条SQL还有无优化空间,判断是否出现了全表扫描和全索引扫描;还有一个额外建议的字段反映了这条语句是否出现了回表现象。如果出现了,就通过添加索引或者修改查询语句,避免回表。

3. 什么是索引?

 索引是一种数据结构,可以帮助SQL语句查询时提高查询效率。索引类似于我们一本书籍的目录,通过目录可以快速找到对应的数据。同样,通过索引也可以实现数据的高效查询,尤其是在数据量较大时,往往效果更加明显。

4. 索引的底层数据结构?

InnoDB引擎下的MySQL索引的数据结构是通过B+树实现的。B+树相比较于二叉树、二叉搜索树、红黑树等,更加矮胖,就是每一层的节点数更多,但是层数较少。在数据不平衡的情况下二叉树可能退化成链表,这样在查询时,查询效率就比较低。并且二叉树每一个节点只有两个子节点,这样在查询时就会导致效率更低。而B树实现的就是每一个节点可以不仅仅只有两个节点,每一个B树的节点既包含数据也包含下一个节点的指针,如果想要查询的数据在最底层时,B树的效率就比较低,因为每次查询都需要将所有节点的数据读取一次,降低了读取效率。而B+树是B树的变种,B+树相比于B树,只有在叶子节点中才存储数据,在非叶子节点中只存储了子节点的指针。并且在叶子节点中,数据之间都拥有指针,类似一个双向链表,所以比较适合范围查询。当查询到一个数据时,就可以通过指针查找到其他数据,不需要返回根节点重新查询,这样可以大大提高查询的效率和CPU的消耗。

5. 什么是聚集索引,什么是非聚集索引?什么是回表查询?

聚集索引就是指数据与索引放在一块,在B+树的叶子节点中,存储了整行数据(B+树是InnoDB引擎下索引的数据结构),这样的索引有且只能有一个一般为主键,因为全部数据已经与该索引存储在一起了。非聚集索引又叫做二级索引,与聚集索引相反即索引与数据不是存储在一起,而是叶子节点中存储了该行数据对应的主键值,如果想要这个索引对应的其他数据,那么就需要回表查询。这样的索引可以有多个。

回表查询就是指,通过二级索引找到主键值,再返回到聚集索引中去查询完整数据,这个过程就是回表查询。

6. 什么是覆盖索引?

覆盖索引就是指所查询的字段中,可以通过索引全部找到,这样的查询就叫做覆盖索引,并且通过覆盖索引可以避免回表查询,从而提高查询的效率。所以在我们编写SQL语句时,也要尽量做到覆盖索引,比如说使用根据主键值进行查询,避免使用select *。

7. MySQL超大分页怎么处理?

超大分页指的是数据量较大时,使用limit进行分页处理查询,这时需要对数据进行排序,所以效率一般都比较低。此时通过覆盖索引+子查询来解决。比如说,先通过查询满足这一页数据的id值,再去查询这部分id值对应的数据即可完成查询。在这次查询中,查询id值是覆盖索引,所以效率较高,再去进行子查询时,查询的数据量就大大减少,这样可以提高查询的效率。

8. 索引创建原则有哪些?

(1) 针对数据量较大且查询比较频繁的表建立索引;

(2) 针对于常作为查询条件(Where)、排序(Order By)、分组(group by)操作的字段建立索引;

(3) 尽量选择区分度较高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的概率就越大;

(4) 如果是字符串数据,当字符串较长时,可以根据字段的特点,建立前缀索引;

(5) 尽量使用联合索引,减少单列索引,查询时联合索引覆盖索引的概率较大;

(6) 要控制索引,并不是越多越好,因为索引越多意味着维护索引结构所需的代价就越大,会影响增删改的效率;

(7) 如果某一列不能出现NULL值,在创建表示给该列添加Not Null约束,优化器会通过是否包含Null值,优化哪个索引可以更有利于查询。

9. 什么情况下索引会失效?

(1) 违反最左前缀原则;

(2) 范围查询右边的列,索引会失效;

(3) 不要在索引列上进行运算操作,否则索引会失效;

(4) 字符串不加单引号会导致索引失效(实际是发生了类型转换);

(5) 以%开头的Like模糊查询,会导致索引失效。

10. 谈一谈你对SQL的优化经验

首先是表的设计优化,在我们项目过程中,所参考的是阿里的开发手册,比如说用到的优化策略有:在创建字段时,尽量给出满足数据的数值类型,比如说整型:tinyint、int、bigint,还有字符串的选择:char、varchar,char的定长效率更高,varchar变长,效率较低。

SQL语句的优化:尽量避免使用select *;尽量避免造成索引失效的写法;避免对where字段后的条件进行表达式操作;在表连接时,尽量使用内部连接,避免使用左右连接。

主从复制,读写分离:如果数据库的使用场景中,使用读数据的操作较多时,为了避免写的操作所造成的影响,可以采用主从分离的结构进行数据库的设计,这样可以避免由于写操作对读操作造成的性能影响。

索引优化(参考索引创建原则);

分库分表。

11. 事务的特性是什么?

首先解释一下什么是事务。事务是一个不可分割的工作单位,事务会将所有操作作为一个整体,一起向系统提交或者撤销。即要么同时成功,要么同时失败。最经典的一个例子就是指,转账业务。A向B转账500元,当A的余额扣减500时,B的余额就必须增加500,不能增加300也不能保持不变。这也体现了事务的特性,接下来就说一下事务的特性:

原子性:原子性就是指事务是一个不可分割的工作单位,事务中的所有操作要么全部成功要么全部失败。

一致性:指事务完成时,所有数据都必须保持一致的状态,比如说A向B转账500元,当事务结束时,要么就是A减少500并且B增加500,要么就是都不变。

隔离性:隔离性是指一个事务运行时不受外部其他事务的影响。

持久性:事务一旦提交或者回滚,那么他对数据库中数据的改变就是持久性的。

12. 并发事务带来哪些问题?怎么解决这些问题?MySQL的默认隔离级别是什么?

并发事务可能带来的问题包括:脏读、不可重复读、幻读。其中脏读是指,某一个事务A在执行时,另外又有一个事务B并发执行,当B事务将数据库中的某条数据修改后,并未提交事务,此时,事务A读取该数据,就可能读到B事务修改后的数据,可是此时B事务还没有提交。不可重复读是指,当A事务刚开始执行时,读取了数据,B事务对数据进行修改后,提交了事务,那么此时A再次查询该数据时,拿到的结果与上次查询得到的结果不一致了。幻读指的是当事务A查询某条数据时提示数据不存在,就在这时B事务向数据库中写入了这条数据,并且提交了事务(默认此时已经解决了不可重复读问题),此时A向数据库写入数据时,就会写入失败,因为此时数据库中已经有这条数据了,就好像出现了幻觉一般。

通过对事物进行隔离,解决上述问题。其中隔离级别包括四级:读未提交、读已提交、可重复读、串行化,越往后隔离界别越高,但是性能就越低。

可重复读是MySQL的默认隔离级别。

13. undo log 和redo log分别是什么?

 先解释一下两个概念,一个是缓冲池一个是数据页。其中缓冲池是主内存中的一个区域,里边可以缓存磁盘上经常操作的数据,这样以后每次增删改对应的数据时,就可以直接操作缓冲池中的数据,减少了磁盘IO的次数,提高了效率,以一定频率刷新磁盘即可。而数据页是innoDB存储引擎磁盘管理的最小单元,每个页的大小默认为16KB,页中存储的是行数据。在一个事务中,数据先在内存结构中写好以后,准备写往磁盘中,但是就在这时服务宕机了,就导致数据丢失,这违背了事务的特性持久性。所以引出了redo log和undo log。

redo log记录的是事务提交时数据页的物理修改,是用来实现事务的持久性的,该日志文件有两部分组成,其中一部分是重做日志缓存,是放在内存结构中,负责记录数据页的物理修改。另一部分叫做日志文件,是放在磁盘中,重做日志缓存会每隔一段时间就去将数据写入日志文件中。这样当刷新脏页到磁盘时,即使发生错误,也可以通过日志缓存文件来恢复数据。

undo log又叫做回滚日志,用于记录数据被修改前的信息,主要作用有两个,一个是提供回滚,另一个是MVCC。比如说,当删除一条数据时,在该日志文件中就会记录一条插入语句,在更新数据时,就会写入一条更新前的数据的写入语句。这样,当发生回滚时,就可以通过undo log来进行数据的回滚。undo log保证了事务的一致性和原子性

14. 解释一下MVCC?

首先说一下事务中的隔离性是如何保证的:锁:排他锁,如一个事务获取了一个数据行的排他锁,那么其他事物就不能再获取该行的其他锁了;MVCC多版本并发控制。

其中MVCC是多版本并发控制,是指维护一个数据的多个版本,使得读写操作没有冲突,它的底层实现是分为三个部分:第一个是隐藏字段,第二个是undo log日志,第三个是readview读视图。

隐藏字段是指,在mysql中给每个字段都设置了隐藏字段,一个是记录事务id,记录每一条操作的事务id,是自增的。另一个是回滚指针,应该指向的是上个版本事务版本的记录地址。

undo log主要的作用是记录回滚日志,记录老版本数据,在内部会形成一个版本链,记录不同事务修改数据的版本,通过回滚指针形成一个链表。

readview解决的是一个事务查询选择版本的问题,在内部定义了一些选择应该访问哪个版本的规则,不同隔离级别的快照读是不一样的。如果是RC隔离级别,每一次执行快照读时都会生成readview,而rr隔离级别,只会在事务 第一次执行快照读时生成readview,后续都会复用这个readview。

15. MySQL主从同步原理?

首先解释一下主从同步是什么意思。如果在一个业务中,读取数据库的操作较多时,就建议部署MySQL的主从机制,主数据库负责写数据,而从数据库负责读数据,每次写入数据后,主数据库就需要将数据同步到从数据库。这样可以避免由于写对读造成性能影响。

MySQL的主从同步的核心是二进制日志文件。二进制日志中会记录所有的DDL和DML预计,但不包括查询语句。主数据库在事务提交时,会将所有的数据变更记录写入到日志文件BinLog中。从数据库会有一个专门的IO线程从主数据库中的二进制文件读取内容,写入到从库中的中继日志文件中。从库重做中继日志中的事件,就可以实现与主库数据的同步。

16. 什么是分库分表?

先说一下什么时候就需要分库分表了:当项目业务增多,或者业务发展比较快,当数据量超过1000W条或者20G以后,优化已经解决不了问题的时候,比如说读写分离,索引覆盖等,都无法提升性能时,这个时候就要考虑分库分表了。

首先是垂直分库:以表为单位,将不同业务的表差分到不同的库中。这样可以按照业务对数据进行分级管理、维护、监控、扩展。在高并发下,提高磁盘IO和数据量连接数。

垂直分表:以字段为单位,将不同字段拆分到不同表中。比如说把不常用的字段或者text,blob等大字段拆分出来放在另一张表中。这样就可以做到冷热数据分离。

水平分库:将一个库的数据拆分到不同库中,即在每个库中可能表格都是一样的,但是数据不一样。这样可以解决单裤大数量,高并发的性能瓶颈问题。具体在读取数据时,根据id值对每个库中的数据量进行取模,从而判断出是在哪个库中。

水平分表:将一个表的数据拆分到多个表中,当然这些表是可以在一个库中的。优化单一表数据量过大而导致的性能问题。同样在查询时也可以通过取模的形式进行判断。

分库分别也可能带来一些问题:分布式事务一致性问题,跨节点关联查询、跨节点分页、主键避重等问题。所以要使用一些中间件来帮助我们进行分库分表之后的操作,比如说:Mycat、sharding-sphere。

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

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

相关文章

Redis集群机制及一个Redis架构演进实例

Replication(主从复制) Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份,从而达到主从机制。为了实现主从复制,我们准备三个redis服务,依次命名为master,slave1,…

Windows系统编程项目(一)进程管理器

本项目将通过MFC实现一个进程管理器,如下图详细信息页所示: 一.首先创建一个基于对话框的MFC项目,在静态库中使用MFC 二.在项目默认的对话框中添加一个列表 三.列表添加变量 四.初始化列表 1.设置列表风格和表头 2.填充列表内容 我们需要在…

RAG-202502

目录 RAG场景的坑知识等级金字塔 初级RAG存在的问题高级RAG索前优化检索优化检索后优化 优化经验总结参考 RAG场景的坑 晦涩的专业术语 误区:在专业领域中。许多文献和资料中充满了专业术语,这些术语对于非专业人士(甚至是大模型&#xff0…

STM32-智能小车项目

项目框图 ST-link接线 实物图: 正面: 反面: 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 测速模块 语音模块SU-03T 网站:智能公元/AI产品零代码平台 一、让小车动起来 新建文件夹智能小车项目 在里面…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效: …

17164字符迁移

17164字符迁移 ⭐️难度:中等 📖 📚 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int q scanner.nextInt();scanner.next…

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决 问题描述 在使用 IntelliJ IDEA 开发 Spring Boot 应用时,有时即使关闭了应用,程序仍然占用端口(例如:4001 端口)。这会导致重新启动应用时出现端口被占用的错误&a…

QT:QPen、QBrush、与图形抗锯齿的关联

QPen QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和…

论文笔记(七十二)Reward Centering(三)

Reward Centering(三) 文章概括摘要3 基于值的奖励中心化4 案例研究: 以奖励为中心的 Q-learning5 讨论、局限性与未来工作致谢 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

单例模式——c++

一个类,只能有1个对象 (对象在堆空间) 再次创建该对象,直接引用之前的对象 so构造函数不能随意调用 so构造函数私有 so对象不能构造 如何调用私有化的构造函数: 公开接口调用构造函数 调用构造函数:singleTon instance; 但…

NLP学习记录十:多头注意力

一、单头注意力 单头注意力的大致流程如下: ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层(Wq、Wk、Wv)后得到查询Q、键K和值V; ② 查询Q和键K经过注意力评分函数(如:缩放点积运算&am…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴:可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题,并非是软件内自主实现的PDF合并,而是调用的pdftk这一工具,但楼主并没有提供pdftk,而…

渗透测试【seacms V9】

搭建seacms环境 我选择在虚拟机中用宝塔搭建环境 将在官网选择的下载下来的文件解压后拖入宝塔面板的文件中 创建网站 添加站点 搭建完成seacmsV9 找到一个报错口 代码分析 <?php set_time_limit(0); error_reporting(0); $verMsg V6.x UTF8; $s_lang utf-8; $dfDbn…

论文阅读笔记:Continual Forgetting for Pre-trained Vision Models

论文阅读笔记&#xff1a;Continual Forgetting for Pre-trained Vision Models 1 背景2 创新点3 方法4 模块4.1 问题设置4.2 LoRA4.3 概述4.4 GS-LoRA4.5 损失函数 5 效果6 结论 1 背景 出于隐私和安全考虑&#xff0c;如今从预先训练的视觉模型中删除不需要的信息的需求越来…

车载DoIP诊断框架 --- 连接 DoIP ECU/车辆的故障排除

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【爬虫基础】第二部分 爬虫基础理论 P1/3

上节内容回顾&#xff1a;【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客 【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客 【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 爬虫相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff…

ue5 3dcesium中从本地配置文件读取路3dtilles的路径

关卡蓝图中获得3dtiles的引用 拉出设置url 设置路径 至于设置的路径从哪里来 可以使用varest读取文件里的接送字符串 path中配置地址 path变量的值为: Data/VillageStartMapConfig.json此地址代表content的地下的data文件夹里的config.json文件 {"FilePath": &quo…

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时&#xff0c;RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础&#xff1a;H.264专题&#xff08;4&#xff09;——NALU Header&#xff1a;forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道&#xff0c;nal_unit…

学习记录:初次学习使用transformers进行大模型微调

初次使用transformers进行大模型微调 环境&#xff1a; 电脑配置&#xff1a; 笔记本电脑&#xff1a;I5&#xff08;6核12线程&#xff09; 16G RTX3070&#xff08;8G显存&#xff09; 需要自行解决科学上网 Python环境&#xff1a; python版本:3.8.8 大模型&#xff1a…

【Java学习】Object类与接口

面向对象系列五 一、引用 1.自调传自与this类型 2.类变量引用 3.重写时的发生 二、Object类 1.toString 2.equals 3.hashCode 4.clone 三、排序规则接口 1.Comparable 2.Comparator 一、引用 1.自调传自与this类型 似复刻变量调用里面的非静态方法时&#xff0c;都…