-
yexindonglai@163.com
2022-03-01 10:51
Java
1163°
0
前言在网上看到大部分的帖子都有介绍性能调优的案例,其中有一项就是告诉你Xms和Xmx参数一定要设置成相同的,这样就可以达到优化的目的,就像这样-Xms1024m-Xmx1024m但是却没说为什么要这么设置,那么这篇文章就是来告诉你这样设置的目的。底层做了哪些事情。jvm性能调优的最基本条件 首先我们要知道,垃圾回收器(GC)在回收内存空间时候,所有的工作线程都会暂停,待回收工作完成后,工作线程才会继续运行。如果GC太频繁,工作线程的效率和响应时间肯定会受影响,所以,jvm性能调优的最基本条件就是<fontcolor="red">要尽可能地减少垃圾回收的次数</font>。那么说到这里,j
-
yexindonglai@163.com
2022-03-01 10:51
Java
1031°
0
jvm内存结构各区域的默认值堆内存堆空间初始值:堆空间最大值:老年代:新生代:新生代和老年代比例:Survivore区:eden区:非堆内存方法区:栈内存堆空间各区域大小划分完jvm内存结构首先,我们来看看jvm堆内存结构,分别新生代、老年代,其中新生代又分为eden区和Survivore区,Survivore区又分为from区和to区;除了堆内存之外,Java虚拟机还有一个非堆的空间,这个空间由所有线程共享的方法区。方法区(也叫永久代)属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法和构造方法的代码。它是在Java虚拟机启动时创建的。各区域的默认值堆内存堆空间初始值:
-
yexindonglai@163.com
2022-03-01 10:50
Mysql
1141°
0
前言在执行一条sql的时候,在mysql内部都会通过以下四个流程+--------------+|连接器|+--------------+\|/+--------------+|分析器|+--------------+\|/+--------------+|优化器|+--------------+\|/+--------------+|执行器|+--------------+我们都知道索引其中一个最主要作用就是加快数据的访问,那么回表、索引覆盖、最左匹配、索引下推都是mysql的内部优化方式,部分的功能是Mysql5.6的版本上推出的,都是针对索引的优化,如果表中没有索引的情况下,那么就不会有
-
yexindonglai@163.com
2022-03-01 10:49
Mysql
1322°
0
join算法驱动表和非驱动表的区别==AjoinB连表时,一定先查A表再查B表吗?==1、SimpleNested-LoopJoin,简单嵌套-无索引的情况2、IndexNested-LoopJoin-有索引的情况3、BlockNested-LoopJoin,joinbuffer缓冲区缓冲区大小数据量大的表和数据量小的表如何选择连接顺序细节join算法mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,简单嵌套IndexNested-LoopJoin,索引嵌套BlockNest
-
yexindonglai@163.com
2022-03-01 10:49
Mysql
1171°
0
什么是分区表分区表应用场景分区表的限制2、列表分区(list分区)3、列分区4、hash分区5、秘钥分区(key分区)6、子分区添加分区分区表原理如何使用分区表注意事项什么是分区表MySQL从5.1版本开始支持分区功能,分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分,但是逻辑上仍是一个表。还没出现分区表的时候,所有的数据都是存放在一个文件里面的,如果数据量太大,查询数据时总是避免不了需要大量io操作;使用分区表后,每个分区存放不同的数据。这样不但可以减少io。还可以加快数据的访问;为了保证MySQL的性能,我们都建议mysql单表不要太大,建议是:单表
-
yexindonglai@163.com
2022-03-01 10:48
Oracle
1259°
0
说明使用方法实战其他用法开窗函数为:over()说明oracle开窗函数和groupby还是有不一样的地方,groupby是分组后就直接去重了,开窗函数分组后不去重,并且还可以进行排序使用方法over(PARTITIONBYage)表示对结果集按照age进行分区实战新建一个user_test表,建表语句为:createtableuser_test(idnumber(20)notnull,namevarchar2(50),agenumber(3))表数据如下,对没错,一共就四条数据,数据量少的情况下理解更容易,不然只有写文章的人能看懂,看文章的人却一脸懵;当我们使用groupby语句时,得出来的
-
yexindonglai@163.com
2022-03-01 10:45
Mysql
1517°
0
什么是锁?表锁行锁memorymyisam表共享读锁当前线程读,其他线程读(myisam)当前会话先读后写(myisam)当前会话程读,其他线程写(myisam)会话1给A表加读锁,会话1在查询查询其他表(myisam)只锁当前会话的读锁(readlocal)表独占写锁innodb事务的四个特征(ACID)脏读幻读不可重复读加共享锁(innodb)事务1读,其他事务也可以读(innodb)事务1读,事务2写会阻塞(innodb)事务A写会报错(innodb)加排它锁(innodb)意向共享锁意向排他锁自增锁模拟innodb死锁行锁演示完什么是锁?锁的存在是为了数据的一致性,我们都知道mysql
-
yexindonglai@163.com
2022-03-01 10:44
Mysql
1193°
0
mysql参数修改参数值[mysql]参数说明字符相关连接相关(connection)日志相关(log)缓存相关(cache)innodb相关mysql参数MySQL提供了相当多的系统参数,涉及方方面面。我们可以使用show关键字来查看:showvariableslike'%autocommit%';或者showstatuslike'%xxx%';修改参数值mysql有一些参数是可以直接修改的,比如mysql的自动提交是默认开启,我们修改为关闭自动提交setautocommit=1;当然也有些系统参数不能直接修改里面的值,当我们修改时会报错,就像这样:mysql>set@@ft_max_wor
-
yexindonglai@163.com
2022-03-01 10:43
Mysql
1049°
0
前言开启profilingshowprofiles查看sql执行所需时间startingcheckingpermissionsOpeningtablesSystemlockSendingdatashowwarnings查看警告信息其他用法完前言Showprofiles最大的好处是可以查看执行sql语句时各个环节的执行时间,Showprofiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。可以执行sqlselectversion();查看当前数据库版本。开启profiling启动数据库后,profiles默认是关闭的,并且开启后只存在当前会话,因为它是保存在内存中的
-
yexindonglai@163.com
2022-03-01 10:42
Mysql
817°
0
mysql执行计划mysql那三张著名的练习表执行计划中包含的信息id完mysql执行计划在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。官网地址:https://dev.mysql.com/doc/refman/5.5/en/explain-output.htmlmysql那三张著名的练习表在介绍explain执行计划之前,我们先把这三张表提前建好,一会要用到;--部门表createtabledept(deptnoi