MySql INNODB引擎下的索引使用原则或注意事项

发布时间:2020-03-13 索引 数据库 MYSQL SQL JAVA

1、 mysql的索引存储类型
BTREE、HASH
INNODB、MyISAM引擎下,只支持BTREE索引

2、 索引的分类-基于INNDB引擎

1) 普通索引,MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

2) 唯一索引:索引列中的值必须是唯一的,但是允许为空值,如果是组合索引,则列值的组合必须唯一(普通索引和唯一索引该怎么选择:这两种索引查询性能差别不大,主要是对更新性能的影响,建议选择普通索引;change buffer只能用于普通索引)

3) 主键索引:是一种特殊的唯一索引,不允许有空值。

4) 联合索引:
多列值组成一个索引,专门用于组合搜索,其效率大于索引合并

注意:①如果查询结果中只有联合索引中的字段,则不需要最左前缀原则,where、group by 或order by中的条件只要是联合索引中的字段就行
示例:SELECT c3 FROM test_index WHERE c2 = ‘1’ (c2对应的联合索引为c1_c2_c3)
②如果对不同的索引做order by 或 group by,就算查询结果只有这两个索引字段,也不能使用索引

5) 前缀索引:取索引字段的前面几个字母作为索引

3、 BTREE存储结构

在InnoDB中,聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:
(1)如果表定义了PK,则PK就是聚集索引;
(2)如果表没有定义PK,则第一个not NULL unique列是聚集索引;
(3)否则,InnoDB会创建一个隐藏的row-id作为聚集索引;

在这里插入图片描述
而非聚集索引存储的结构树,其叶子节点存储的值为聚集索引的值,通过非聚集索引找到聚集索引,再通过聚集索引找到其他数据的流程称为回表。
在这里插入图片描述

4、 索引的使用原则或注意事项

1)对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引

2)数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果

3)在不同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可以建立索引

4)尽量只列出需要查询的字段(如果没有查询条件的情况下,查询的结果只有一个索引字段,则索引生效),看情况建立联合索引,实现索引覆盖,避免回表

5)对于那些定义为text、image和bit数据类型的列不应该增加索引。因为这些列的数据量要么相当大,要么取值很少

6)不要对包含null值的列加索引(只要列中包含有NULL值,都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的。)

5、 索引失效

1)、如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因),要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引,这个时候会使用索引合并(explain SELECT * FROM test_index where c4 = ‘1’ or c5 = ‘1’ 其中c4、c5分别建立索引)

2)、联合索引,需满足最左前缀原则

3)、like查询以%开头的列索引会失效

4)、如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

5)、不等于(!= ,<> ),EXISTS,not in,is not null,>,<索引都会失效

更多相关推荐


自学java,学习到什么程度可以找工作

发布时间:2020-07-09 程序员 呐喊 编程语言 JAVA基础 JAVA
我个人学习Java就是自学的,所以还是有一些发言权,我是学电子专业的,上大四的时候想做IT,因为感觉本专业不挣钱,用了一年的时间在学校自学了Java,学习的过程中无非就是两个字最重要:坚持。因为学习Java是一个相对漫长的过程,熬夜是不可避免的,而我现在觉得,如果年轻的时候不熬夜拼一拼,那以后真的要遭罪了。毕业之后找到一份6500的工作,不多不少还算满意,够自己生活。然后就在工作中不断积累自己的项...

做为测试人员需要用到的MySql命令大全—基础篇

发布时间:2017-04-10 测试 MYSQL(数据库) MYSQL
1、连接Mysql格式:mysql-h主机地址-u用户名-p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符...

MySql的Delete、Truncate、Drop分析

发布时间:2012-06-05 DELETE TABLE 数据库 MYSQL 存储 语言
相同点:  truncate和不带where子句的delete,以及drop都会删除表内的数据  不同点  1.truncate和delete只删除数据不删除表的结构(定义)  drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。  2.delete语句是数据库操作语言(dml),...

测试工作中经常用到的一丢Linux命令

发布时间:2017-05-12 运维 操作系统 JAVA
自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用。。。这时就不得不需要一些基本的Linux命令来处理遇到的这些问题1.cd命令用于切换目录(可以一级一级地切换,也可以一次性切换到指定目录)[han@56~]$cdshipping/[han@56~]$cdshipping/apache-tomcat-7.0.55/bin/[h...

学软件测试和java哪个好,项目实战

发布时间:2021-06-27 面试 经验分享 JAVA 程序员
正文二叉树由n(n&gt;0)个有限节点组成一个具有层次关系的集合,看起来就像一个倒挂的树,因此称这样的数据结构为树。一个节点的子节点个数叫做度,通俗的讲就是树叉的个数。树中最大的度叫做树的度,也叫做阶。一个2阶树最多有2个子节点即最多有2叉,因此这样的树称为二叉树,二叉树是树家族中最简单的树。两个叉的树就是二叉树,可这除了用来按一定结构存放数据外,跟查询性能好像也没关系,不会又是一个没用的噱头吧...

软件测试和java,学哪个好?

发布时间:2020-06-19 JAVA 软件测试
java对逻辑思维能力有一定要求,软件测试对耐心细致有一定要求。相对来说软件测试更容易入门。两者学会都不难,关键是要找一家靠谱的培训机构,并且加倍努力学习。但选择学什么是非常重要的。两者相比,开发起始薪资比测试高,但在工作几年后测试薪资和开发不相上下,并且测试岗没有年龄限制,是一个可持续性发展的岗位,而开发吃的是青春饭,一般到了30岁,就要好好考虑以后的发展了。举个简单的例子吧,有个朋友之前做ja...

java与软件测试哪个好?

发布时间:2017-12-06 JAVA 软件测试
有这种问题的同学,其实是在比较学编程好,还是搞测试好?其实重要是看个人喜好的发展,因为兴趣决定方向。就目前国内工资来看,编程要比测试要好些,不过测试也分何种测试。你可以兼顾学JAVA然后编写白盒测试用例,当你的经验足够丰富的时候收入很可能超过编程人员。但测试在国内只有到大机构就职才有发展机会,JAVA的能力是伴随你的工作经历成长的。从长远讲编程比较累,测试相对枯燥,仁者见仁智者见智,你还是需要自己...

最近在忙什么

发布时间:2007-04-27 TOMCAT ECLIPSE 旅游 WEB开发 JAVA MYECLIPSE
          最近学了一点JAVA的皮毛,终于可以在DOC下输出“HelloWorld”了。也不知道上面这个英文句子写的对不对。发现JAVA其实好像貌似大概和C#有点像。刚搭建好了一个Eclipse+MyEclipse+Tomcat的据说是WEB开发的环境,还没有用过。上头的人就叫我在大概12天的时间里做出一个计费软件出来,接过手来一看,给我的是:需要计费的机器一台,说明书一页 一看这个完全...

场景设计方法

发布时间:2019-03-27 测试 数据库
一.方法简介现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。...

JAVA 浮点数转化为百分数

发布时间:2013-11-20 JAVA
publicclassDoubleToPercentformat{  /** *将double类型数据转换为百分比格式,并保留小数点前IntegerDigits位和小数点后FractionDigits位 *@paramd *@paramIntegerDigits *@paramFractionDigits *@return */ publicstaticStringgetPercentFormat...

Jmeter自定义函数使用方法

发布时间:2017-06-06 JMETER JAVA 自动化测试 软件测试
编写获取本地和远程图片流的Jmeter自定义函数代码如下:packageorg.apache.functions;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.util.Collectio...

数据库导出表结构设计word文档

发布时间:2016-09-08 数据库
1、DBExportDocV1.0ForOracle工具导出的word文档中的表格没有边框。2、可以通过如下的宏,选中所有表格后,进行边框设置。ALT+F8,打开宏对话框,创建名为SelectAllTables的宏。代码如下:SubSelectAllTables()DimtempTableAsTableApplication.ScreenUpdating=False'判断文档是否被保护IfActi...

软件测试V模型

发布时间:2017-04-21 测试 数据库
软件测试V模型V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。需求分析即首先要明确客户需要的是什么,需要软件做成什么样子,需要有哪几项功能,这一点上比较关键的是分析师和客户沟通时的理解能力与交互性。要求分析师能准确的把客户所需要达到的功能,实现方式,等表述出来,给出分析结果,写出需求规格说明书。 概要设计主要是架构的实现,...

软件开发的V模型

发布时间:2019-03-05 测试 数据结构与算法 数据库
原文来自:http://www.51testing.com/html/67/n-3723567.html软件开发的V模型大家都不陌生,其中测试阶段分为单元测试-&gt;功能测试-&gt;系统测试-&gt;验收测试。其中单元测试一般由开发自己完成,大部分测试具体实施(这里不包括用例设计)是从单体功能测试开始着手的。原文来自:https://blog.csdn.net/summerlemon/arti...

登陆、添加、删除、查询模块的测试点

发布时间:2007-03-21 测试 TABLE 数据库 软件测试
1.    登陆①    用户名和密码都符合要求(格式上的要求)②    用户名和密码都不符合要求(格式上的要求)③    用户名符合要求,密码不符合要求(格式上的要求)④    密码符合要求,用户名不符合要求(格式上的要求)⑤    用户名或密码为空⑥    数据库中不存在的用户名,不存在的密码⑦    数据库中存在的用户名,错误的密码⑧    数据库中不存在的用户名,存在的密码⑨    输入的...

高楼的性能工程实战课-011-打开首页--一个案例带你搞懂硬件设施的性能问题

发布时间:2021-08-27 数据库 笔记 BIG DATA
打开首页--一个案例带你搞懂硬件设施的性能1.看架构图:如果有工具直接展示更好,如果没有工具,建议我们画一画,方便以后分析,不要自信认为自己能记住框架的所有组件。2.顺便看下代码逻辑,从代码中查看这个接口实现的逻辑,在做哪些动作,以及后续的链路。3.确定压力数据:   这里我们就要思考一下了:如果想要执行一个场景,并且这个场景可以压出打开首页接口的最大TPS,我们应该怎么设置压力工具中的线程数、递...

性能测试分析案例

发布时间:2019-05-20 数据库 游戏 VIEWUI 前端
转载:chengzhang的博客1.1. 程序分析案例用jconsle做监控,发现内存持续的不释放,波谷或者波峰呈现持续上升的趋势,并且监控tomcat日志的时候发现有outofmemory:java heapspace的错误日志,就用jmap区定位这个问题,找到了在JVM内存堆中占用最大的一个类。然后和开发沟通后,对这个方法进行修改后,再次用jconsle进行监控,发现内存增长,回收波动变得比较...

CPU分析系列--性能测试---数据库性能分析

发布时间:2021-11-18 服务器 性能测试 数据库 测试工程师
目录1.数据库设置 2.nmon查看服务器状态 3.分析定位性能瓶颈:响应时长过长,TPS低:    a.查看服务器资源使用情况,如果user态%CPU使用率高,        1.定位是哪个进程占用率高:        2.查看响应时间:        3.查询慢查询日志中就有相关sql        4.在执行计划EXPLAIN中查看执行信息.    b.查看服务器资源使用情况,如果系统资源占...

软件测试之等价类划分

发布时间:2015-03-21 测试 JAVASCRIPT JAVA VIEWUI
                                             EquivalenceClassPartitioning(等价类划分)   作为一个程序猿我们应该知道在软件测试过程中需要使用大量的测试用例,那么如何选择适当的测试用例来代表整个数据集,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷呢。而本篇博客中讲解的等价类划分方法就是为...

try catch 嵌套

发布时间:2022-03-23 SPRING JAVA
实践测试在单元测试中写入以下方法:testMain()主方法,out()里面嵌套了两层trycatch异常代码写在内层try中示例一:@TestpublicvoidtestMain(){out();log.info("后续处理业务");}publicvoidout(){//外层trytry{System.out.println("外层输出");//内层trytry{inti=2/0;//异常代码}...

sql数据库

发布时间:2022-03-23 MYSQL SQL
–dept部门表CREATETABLEdept(didINTPRIMARYKEY,dnameVARCHAR(255));–job职位表CREATETABLEjob(jidINTPRIMARYKEY,titleVARCHAR(255));–emp员工表CREATETABLEemp(eidINTPRIMARYKEY,enameVARCHAR(255),sexVARCHAR(255),ageVARCHA...

第三周考试题

发布时间:2022-03-18 SQL
1.测试用例的设计方法有哪些并简要解释1.等价类划分:当测试需要的数据量过大,且数据操作可以分类时2.边界值法:当测试数据有明显范围或者个数时3.场景法:测试基本流程时使用4.反推法:不单独使用5.正交表法:一个界面中有多个控件,每个控件有多个取值,把控件排列组合,结果就是输出6.因果图法:输入条件多时,测试所有输入条件的排列组合,原因就是,输入,结果就是输出7.判定表法:因果图转换为判定表,根据...

还在手动搭建各种环境?docker容器教你一步到位

发布时间:2018-12-17 容器 JAVA DOCKER 项目部署 服务器部署
希望大家关注一下我的个人博客主页雷园的博客前言好久不见朋友们,最近没什么好的知识点可以分享给大家,所以好久没有更新。这两天趁着休息,研究了一下docker容器,觉得是一个非常不错的工具,对于大家来说,一定会是一个好助手。docker是什么?为什么使用docker?这里我就不摘取百科的东西了,简单的来说一下我的理解。我认为docker容器呢,就类似于我们电脑中经常用到的虚拟机。docker容器可以容...

CentoOS7中docker环境以及容器环境的搭建

发布时间:2020-06-06 LINUX CENTOS REDIS MYSQL DOCKER
1.安装docker首先什么是Docker呢?Docker是一种虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间互相隔离。更多具体细节及其他系统上的安装可以参考Docker的官方安装文档。首先我们需要做一些准备工作,需要卸载已有(如果有的情况下)的docker环境,在终端输入以下命令:sudoyumremovedocker\docker-cli...

nGrinder 简易使用教程

发布时间:2017-07-10 JAVA
背景性能压测工具之前使用的是jmeter,这次说的是nGrinder,先直接搬运两者之间的比较比较点JMeternGrinder结果实现语言JavaJava=LicenseApachev2Apachev2=使用方式C/S或CommandB/S&lt;支持分布式master/slavecontroller/agent=资源监控monitor/plugin,如果二开,需要查找plugin的源码moni...

ngrinder安装

发布时间:2018-01-29 JAVA
1、源码编译和部署官网:http://naver.github.io/ngrinder/下载源码后,存在部分依赖库不在maven的远程仓库中,这是可以用下载jar包后,用以下命令打包到本地仓库:mvninstall:install-file-Dfile=D:/taobao-sdk-java-auto-20160607.jar-DgroupId=com.ganshane.specs-Dartifac...

本地计算机上的SQL Server(MSSQLSERVER)服务启动后又停止了。问题解决方法之一

今天启动SQLserver服务时遇到如下问题:从网上搜索大部分都说是由于Sqlserver2005配置管理器-&gt;Sqlserver2005网络配置-&gt;MSSQLSERVER的协议-&gt;VIA,状态为“已启用”导致,将其设置为禁用即可查看本机发现VIA状态为“已禁用”  然后效仿别人查看安装路径下的Errorlog,结果发现部分有效信息,如图粉色框圈选部分:找到问题的入口后,开始寻找...

oracle 11g导出的dmp数据导入到oracle10g

发布时间:2011-09-14 ORACLE11G 工具 ORACLE ORACLE10G 数据库
将oracle 11g导出的dmp文件导入到oracle10g 1.进行导入表操作,提示:IMP-00010:不是有效的导出文件,头部验证失败IMP-00000:未成功终止导入 2.从网上查阅,oracle数据11g到10g是有问题的,一般由oracle10g客户端去连oracle11g进行导出数据操作然后导入到oracle10g,如果手中只有oracle11g的dmp文件,怎么办3.从网上查阅,...

【软件测试】黑盒测试技术——等价类划分和边界值分析

发布时间:2017-04-05 JAVA 黑盒测试 软件测试
黑盒测试技术也称功能测试、数据驱动的测试、基于规格说明的测试。测试方法有:等价类划分法、边界值分析法、决策表法、因果图法、错误推测法、正交试验法和场景法。本文先介绍等价类划分法和边界值分析法。等价类划分法1.概念:根据需求对输入范围进行细分,然后在分出的每一个区域内选取一个有代表性的测试数据开展测试。等价类=有效等价类+无效等价类2.方法步骤:依据常用方法划分等价类;为每一个等价类规定一个唯一编号...

作为一名测试工程师,你真的知道“微信红包”怎么测试吗?

发布时间:2021-06-01 PYTHON JAVA 软件测试
测试思维测试任何事物的测试思路可以总结如下:第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的?这个步骤一般是参考公司的需求文档来的,如果产品提供需求文档的同时提供了业务流程图,可以遵循流程图来梳理;如果产品没有提供流程图,就需要测试人员根据需求的理解自己画出流程图,达到梳理业务的目的。第二步:根据流程进行模块细分,然后针对每个功能模块进行详细的测试点设计和提取。...

我是如何设计游戏服务器架构的

发布时间:2016-09-23 JAVA NETTY 网络
前言 现在游戏市场分为,pc端,移动端,浏览器端,而已移动端和浏览器端最为接近。都是短平快的特殊模式,不断的开服,合服,换皮。如此滚雪球!那么在游戏服务器架构的设计方面肯定是以简单,快捷,节约成本来设计的。来我们看一张图:这个呢是我了解到,并且在使用的方式,而PC端的游戏服务器而言,往往是大量的数据处理和大量的人在线,一般地图也是无缝地图的完整世界观,所以不同的程序都是独立的进程并且在不同的ser...

游戏服务器框架

发布时间:2015-05-25 JSON C/C++ 数据库
游戏服务器框架——蔡剑彬C++服务器开发工程师(caijianbin668934@163.com)最简单的服务器莫过于在一个while循环里面不停地accept新的sockset,然后做相应的处理。虽然个人是比较推崇简单的事物,毕竟简单才是终极的复杂。但是如果那样做,在实际应用中就难免不适用。所以,在不把服务器变得十分复杂的前提下,一步步地从一个while循环拓展为能够适用于实际情况的服务。首先,...

游戏服务器,登陆认证

   写这些东西,纯属是在学习的时候的一些笔记,或者是自己的认识,或者是在资料上看到的好的论点,发现有的时候如果不把这些东西记下来,后来再忘记掉,真的是很划不来的一件事,本来是打算记在笔记本上,但是最终觉得记在这里会更好,也许对别人会有所帮助.真的是第一次写帖子,大家多包涵~~~这一篇的主题是介绍一个网络游戏的登陆认证过程 1.概述    网络游戏通常都需要进行账号登陆管理,验证账号及密码,进行上...

opengl层次建模_层次建模简介

发布时间:2020-09-07 PYTHON JAVA
opengl层次建模介绍(Introduction)Itisnotuncommontofindsamplesinourdatasetsthatarenotcompletelyindependent.Samplesindatasetsoftenformclustersorgroupswithinwhichsomepropertiesareshared.Thisoftenrequiressomespe...

【JAVA多线程21】CountDownLatch

发布时间:2019-06-13 JAVA 多线程 JAVA多线程 COUNTDOWNLATCH
前序:上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现。经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消除bug。什么时候用?多线程是在很多地方都会用到的,但是我们如果想要实现在某个特定的线程运行完之后,再启动另外一个线程呢,这个时候CountDownLatch就可以派上用场了怎么用?先看看普通的多线程代码...

性能测试新手误区(二):为什么我模拟的百万测试数据是无效的

发布时间:2012-03-14 数据库 大数据
  系列原创:性能测试新手误区   测试环境的重要性无需多说,大家都知道测试环境要尽量的模拟生产环境,当然也包括数据。这样测试的结果才会更加准确的反应真实的性能。就连开发过程,都已经开始在大数据量下加压开发了。那么,关于测试数据,你了解多少呢?  通常说的测试数据可以分为两类:  一是为了测试性能而准备的数据,这是用来模拟“压力”的数据。也就是常说的数据量、历史数据等。一般都会根据需求或者经验很容...

并发场景设计测试

发布时间:2017-03-30 数据库
Previous最近在看并发编程,但是对于我这么个渣渣来说,显然有点儿困难,于是跟一个老司机请教,(ˇˍˇ)~请他来出一个场景,然后我把我放在这个场景里面进行设计,so,玩一玩。。。场景设计数据库里面导入10w篇文章,然后对文章进行内容分词,采用多线程方式,线程池方式;达到要求:1,性能最大化;2,资源收集批量更新;步骤设计数据抓取使用Python抓取10w的文章,存入mysql;获取关键词集合取...

Java基础题测试大全,传智权威测试题

发布时间:2014-03-31 JAVA
Java基础测试题大全,如果能做出来完,就说明你的Java基础学的相当的不错了!/*★★★★★====第一题====================================简述ArrayList、Vector、LinkedList之间的区别?Collection和Map之间的区别?HashSet和TreeSet之间的区别?Collection和Collections的区别?HashTabl...

持续演进的接口自动化测试方案

发布时间:2020-10-14 大数据 软件测试 编程语言 JAVA 分布式
作者:Henry部门:美业测试前言接口自动化测试是个老生常谈的话题,基本上每个测试团队都会涉及,市面上大部分文章会从如何设计框架去讲解。但是这一次我想回归自动化的根本价值,从持续演进的解决方案出发,讲解有赞测试团队的心路历程和对于接口自动化的理解,欢迎交流。一、价值有赞测试团队肩负的一个使命是:打造高效且可靠的产品交付能力。为了完成这个使命,我们会借助各种工具,而接口自动化就是其中的一把利器。如何...

CompletableFuture的单元测试Mock

发布时间:2021-12-18 SPRING JAVA 单元测试
在spring项目,假设我们有一个方法// 一个executor,和普通定义线程池一样(此处是spring自带,@Scheduled注解用到的全局线程池)@Resourceprivate ThreadPoolTaskExecutor executor;// 另一个需要装配的假定的服务@Resourceprivate AnotherService anotherService;// Completa...

CompletableFuture异步任务编排用法和详解

发布时间:2021-10-31 多线程 SPRING SPRING BOOT JAVA基础 JAVA
在工作中,常常会调用多个服务或者方法去获取不同的数据,如果传统做法就是串行一个个获取,然后封装返回。我们可以尝试使用CompletableFuture,将多个操作交给异步线程执行,然后主线程等待最长任务完成,将所有结果一并返回即可。Future局限性当我们得到包含结果的Future时,我们可以使用get方法等待线程完成并获取返回值,但我们都知道future.get()是阻塞的方法,会一直等到线程执...

Java线程池监控及CompletableFuture详解

发布时间:2022-04-15 后端 开发语言 并发编程专题 JAVA
Java线程池核心原理与最佳实践前言Java后端开发中我们经常使用线程池(ThreadPool)去提升程序的性能。通过池化的思想进行线程复用、管理,可以降低系统资源消耗、提升系统响应速度、减少系统处理耗时。熟悉服务器端开发的同学都知道,Web服务器在接收客户端请求时,通常不会采取来一个请求就新建一个线程处理的方式。虽然这种方式实现起来简单易懂,但是如果并发的请求数非常多,并且每个请求的实际处理耗时...

并发编程之CompletableFuture异步编排的详细介绍和基本使用(全网最细最全)

发布时间:2022-03-21 JAVA SPRING BOOT
CompletableFuture类实现了Future接口,所以你还是可以像以前一样通过`get`方法阻塞或者轮询的方式获得结果,但是这种方式不推荐使用。CompletableFuture和FutureTask同属于Future接口的实现类,都可以获取线程的执行结果Future是Java5添加的类,用来描述一个异步计算的结果。你可以使用`isDone`方法检查计算是否完成,或者使用`get`阻塞住...

业务测试概念和执行

发布时间:2017-03-10 数据库
业务测试概念和执行一.业务测试概念:       业务测试是测试人员把系统各个模块串接起来运行、模拟真实用户     实际的工作流程,满足用户需求定义的功能来进行测试流程二.测试的时间:       已完成功能测试并保证功能正常使用三.业务流程分2种:       基本数据       业务数据重点:数据业务流程四.业务测试执行1.在执行业务测试之前,清空业务数据,保留基础数据2.按照业务用例执行...

MySQL数据库常见面试题一(传智专修学院2017级java4班)

1.在数据库中你怎么把时间进行格式化selectDATE_FORMAT(updated_at,'%y-%M-%D')fromtb_sku;2.什么是视图?表和视图的关系1.视图:就是一种虚拟的表,是一个逻辑表,本身不包含数据,作为一个select语句存在数据字典中的2.通过视图,可以展示基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成3.基表:用来创建视图的表叫做基表base...

MySQL中LIMIT查询和BETWEEN查询对比

发布时间:2017-10-19 MYSQL
当数据库某表中数据量较大时,查询会变得比较慢。在此情况下可以考虑BETWEEN查询替换LIMIT查询实测:app_log大约2000000条数据,从第1500000开始取出10条数据每次执行SQL语句之前进行数据库查询缓存操作resetquerycache;1、select*fromapp_loglimit1500000,10[SQL]select*fromapp_loglimit1500000,...