20240111

本文探讨了Tomcat的线程池配置,重点介绍了maxThreads和maxConnections的区别,以及MySQL的explain命令在分析查询执行计划中的作用。此外,还讨论了索引的优缺点和常用的B-Tree索引与哈希索引结构。
摘要由CSDN通过智能技术生成

1 tomcat

tomcat的默认最大线程数maxThreads是200,默认核心线程数(最小空闲线程数)minSpareThreads是10。

在核心线程数满了之后,会直接启用最大线程数,当达到最大线程数后,新的请求会添加到工作队列,工作队列长度是Integer.MAX_VALUE(2147483647)。

比较容易弄混的是maxThreadsmaxConnections这两个参数:maxThreads是指Tomcat线程池做多能起的线程数,而maxConnections则是Tomcat一瞬间做多能够处理的并发连接数。

tomcat允许接收和处理的最大连接数:

  • BIO模型的默认值等于maxThread的值(默认200),

  • NIO模型的默认值为10000,

  • APR/native的默认长度为8192。

当达到最大连接数后,新的连接请求添加到一个连接请求等待队列

比如maxThreads=1000,maxConnections=800,假设某一瞬间的并发时1000,那么最终Tomcat的线程数将会是800,即同时处理800个请求,剩余200进入队列“排队”,如果acceptCount=100,那么有100个请求会被拒掉。

2 Mysql的explain

EXPLAIN命令用于分析SELECT语句的执行计划,它能够告诉我们MySQL如何执行查询,并提供了有关查询执行过程中使用的索引、表访问方式、连接方法和数据访问顺序等信息。通过分析执行计划,我们可以识别和解决查询性能问题,优化查询语句和索引设计。

在这里插入图片描述

返回列信息

  • id:这是查询执行计划中的步骤编号。如果查询涉及多个表,每个表都有一个唯一的标识符,id从1开始递增。

  • select_type:表示查询的类型,可能的取值有:

    • SIMPLE:简单的不包含子查询或UNION的查询。
    • PRIMARY:查询中包含子查询或UNION。
    • SUBQUERY:在SELECT或WHERE列表中包含子查询。
    • DERIVED:在FROM子句中包含的派生表的查询。
  • table:显示查询涉及的表名。

  • partitions:显示查询涉及的分区信息,当partitions列为NULL时,说明查询涉及的表没有分区,或者查询没有利用分区的特性。

  • type:表示访问表的方式,包括:

    • ALL:全表扫描。
    • INDEX:通过索引全范围扫描。
    • RANGE:通过索引进行范围扫描。
    • REF:非唯一索引的等值查找。
    • CONST:常量表。
  • possible_keys:显示可能应用在这张表中的索引。

  • key:显示实际使用的索引。如果为NULL,则没有使用索引。

  • key_len:表示索引使用的字节数。

  • ref:显示了用于联接的索引列或常量列的信息。ref列的可能取值取决于查询的类型和联接条件。以下是一些常见的ref列取值:

    • 常量值 (const):表示查询中使用了常量值来匹配索引。
    • 列值 (column_name):表示查询中使用了某一列的值来匹配索引。
    • NULL:表示没有使用索引进行匹配,而是使用了全表扫描。
    • 表达式 (expression):表示查询中使用了表达式来匹配索引,而不是简单的列值。
    • 多列 (column1, column2):表示查询中使用了多个列的值进行索引匹配。
  • rows:表示MySQL认为必须检查的行数,这只是一个估算值。

  • filtered:表示返回结果的行占总表行的百分比,也是一个估算值。

  • Extra:包含额外的执行信息,如使用了临时表、使用了文件排序等, 常见的Extra信息包括:

    • Using filesort:表示MySQL正在对结果进行文件排序,可能是由于无法使用索引直接得到有序结果。
    • Using temporary:表示MySQL在执行查询时创建了一个临时表,通常发生在涉及到GROUP BYORDER BY的情况。
    • Using index:表示查询使用了覆盖索引,即查询的列都在索引中,而不需要回表到原始数据行。

    如果ExtraNULL,那么查询执行没有涉及到上述的特殊操作,通常是一个较为简单的查询。

3 MySQL索引

3.1 索引的优缺点

使用索引前:

在这里插入图片描述

使用索引后:

在这里插入图片描述

优点:索引大大减小了服务器需要扫描的数据量,从而大大加快数据的检索速度

缺点:

  1. 创建索引和维护索引要耗费时间
  2. 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间
  3. 对表中的数据进行增、删、改的时候,索引也要动态的维护

3.2 常用索引结构

3.2.1 B-Tree索引(平衡树索引)

  • B-Tree(Balanced Tree)是一种平衡树结构,它能够在数据量较大时仍然保持较高的查询性能。

  • MySQL的默认存储引擎InnoDB使用B-Tree索引,它适用于等值查询和范围查询。

3.2.2 哈希索引

  • 哈希索引使用哈希函数将索引列的值转换为哈希码,然后将哈希码存储在索引中。
  • 哈希索引适用于等值查询,但不适用于范围查询,因为哈希函数的特性导致相邻的值可能被映射到远离的哈希码。

3.2.2 哈希索引

  • 哈希索引使用哈希函数将索引列的值转换为哈希码,然后将哈希码存储在索引中。
  • 哈希索引适用于等值查询,但不适用于范围查询,因为哈希函数的特性导致相邻的值可能被映射到远离的哈希码。
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值