前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >真的坑,这个 MySQL 的 bug 99% 的人会踩!

真的坑,这个 MySQL 的 bug 99% 的人会踩!

作者头像
终码一生
发布于 2022-04-15 02:03:43
发布于 2022-04-15 02:03:43
67601
代码可运行
举报
文章被收录于专栏:终码一生终码一生
运行总次数:1
代码可运行

这周收到一个 sentry 报警,如下 SQL 查询超时了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from order_info where uid = 5837661 order by id asc limit 1

执行show create table order_info发现这个表其实是有加索引的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `order_info` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `uid` int(11) unsigned,
  `order_status` tinyint(3) DEFAULT NULL,
  ... 省略其它字段和索引
  PRIMARY KEY (`id`),
  KEY `idx_uid_stat` (`uid`,`order_status`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8

理论上执行上述 SQL 会命中idx_uid_stat这个索引,但实际执行explain查看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
explain select * from order_info where uid = 5837661 order by id asc limit 1

可以看到它的 possible_keys(此 SQL 可能涉及到的索引) 是 idx_uid_stat,但实际上(key)用的却是全表扫描

我们知道 MySQL 是基于成本来选择是基于全表扫描还是选择某个索引来执行最终的执行计划的,所以看起来是全表扫描的成本小于基于 idx_uid_stat 索引执行的成本,不过我的第一感觉很奇怪,这条 SQL 虽然是回表,但它的 limit 是 1,也就是说只选择了满足 uid = 5837661 中的其中一条语句,就算回表也只回一条记录,这种成本几乎可以忽略不计,优化器怎么会选择全表扫描呢。

为了查看 MySQL 优化器为啥选择了全表扫描,我打开了 optimizer_trace 来一探究竟

画外音:在MySQL 5.6 及之后的版本中,我们可以使用 optimizer trace 功能查看优化器生成执行计划的整个过程

使用 optimizer_trace 的具体过程如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET optimizer_trace="enabled=on"; // 打开 optimizer_trace
SELECT * FROM order_info where uid = 5837661 order by id asc limit 1
SELECT * FROM information_schema.OPTIMIZER_TRACE; // 查看执行计划表
SET optimizer_trace="enabled=off"; // 关闭 optimizer_trace

MySQL 优化器首先会计算出全表扫描的成本,然后选出该 SQL 可能涉及到的所有索引并且计算索引的成本,然后选出所有成本最小的那个来执行,来看下optimizer trace给出的关键信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "rows_estimation": [
    {
      "table": "`rebate_order_info`",
      "range_analysis": {
        "table_scan": {
          "rows": 21155996,
          "cost": 4.45e6    // 全表扫描成本
        }
      },
      ...
      "analyzing_range_alternatives": {
          "range_scan_alternatives": [
          {
            "index": "idx_uid_stat",
            "ranges": [
            "5837661 <= uid <= 5837661"
            ],
            "index_dives_for_eq_ranges": true,
            "rowid_ordered": false,
            "using_mrr": false,
            "index_only": false,
            "rows": 255918,
            "cost": 307103, // 使用idx_uid_stat索引的成本
            "chosen": true
            }
          ],
       "chosen_range_access_summary": { // 经过上面的各个成本比较后选择的最终结果
         "range_access_plan": {
             "type": "range_scan",
             "index": "idx_uid_stat", // 可以看到最终选择了idx_uid_stat这个索引来执行
             "rows": 255918,
             "ranges": [
             "58376617 <= uid <= 58376617"
             ]
         },
         "rows_for_plan": 255918,
         "cost_for_plan": 307103,
         "chosen": true
         }
         }
    ...

可以看到全表扫描的成本是 4.45e6,而选择索引 idx_uid_stat 的成本是 307103,远小于全表扫描的成本,而且从最终的选择结果(chosen_range_access_summary)来看,确实也是选择了 idx_uid_stat 这个索引,但为啥从 explain 看到的选择是执行 PRIMARY 也就是全表扫描呢,难道这个执行计划有误?

常见的几种MySQL数据优化方式。。。。。。。

选取最适合的字段属性

1、MySQL可以很好的支持数据量的很大的存取,但是一般说来,数据库中的表越小其查询的速度就也快。所以,可以在建表的时候,为了获取更好的性能,将表中的字段长度设的尽可能的小。

2、尽可能的把字段设置成NOT NULL,这样在执行查询的时候,数据库不用去比较NULL值。

3、对于部分的文本字段,例如“性别”或者“民族”,我们就可以用enum来定义。MySQL会把enum类型的数据当作数值型来处理,而数值型数据被处理起来的速度要比文本类型快的多。这样我们就可以提高数据库的性能。

使用连接(JOIN)来代替子查询是(sub-Queries)

MySQL从4.1开始就支持SQL的子查询。这个技术可以使用select语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。

例:将客户基本信息表中没有任何订单的客户删除掉

DELETE FROM customerinfo WHERE CustomerID NOT IN (SELECT CustomerID FROM salesinfo)

利用子查询先从销售信息表中将所有发出订单的客户ID取出,然后将结果传递给主查询。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,在某些情况下,子查询可以被更有效率的连接(JOIN)替代。

例:将所有没有订单记录的用户取出来

SELECT * FROM customerinfo WHERE CustomerID NOT IN (SELECTC ustomerID FROM salesinfo)

如果使用连接(JOIN)来完成这个查询工作,速度将会很快。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好:

SELECT * FROM customerinfo LEFT JOIN salesinfo ON customerinfo.CustomerID = salesinfo.CustomerID WHERE salesinfo.CustomerID ISNULL

连接(JOIN)之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需求两个步骤的查询工作。

使用联合(union)来代替手动创建的临时表

Union查询可以把需要使用临时表的两条或者更多的select查询合并成一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库的整齐、高效。使用union来创建查询的时候,只需要用union作为关键字把多个select语句连接起来就可以了(所有的select语句中的字段数目相同)

SELECT Name,Phone FROM client UNION

SELECT Name,BirthDate FROM author UNION

SELECT Name,Supplier FROM product

事务

尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都操作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致性和完整性。事物以BEGIN关键字开始,COMMIT关键字结束。在这之间的一条SQL操作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。

BEGIN; INSERT INTO salesinfo SET CustomerID=14; UPDATE inventory SET Quantity=11 WHERE item='book'; COMMIT;

事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。

锁定表

尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独立性,有时会影响数据库的性能,尤其是在很大的应用系统中,由于在事务执行的过程中,数据库将会被锁定,因此其它的用户请求只能暂时等待直到该事务结束。如果一个数据库系统只有少数几个用户来使用,事务造成的影响不会成为一个太大的问题;但假设有成千上万的用户同时访问一个数据库系统,就会产生比较严重的相应延迟。其实,有些情况下可以通过锁定表的方法来获得更好的性能。

LOCK TABLE inventory WRITE SELECT Quantity FROM inventory WHERE Item='book';

...

UPDATE inventory SET Quantity=11 WHERE Item='book'; UNLOCKTABLES

这里,我们用一个select语句取出初始数据,通过一些计算,用update语句将新值更新到表中。包含有WRITE关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行插入、更新或者删除的操作。

使用外键

锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候就可以使用外键。

例如,外键可以保证每一条销售记录都指向某一个存在的客户。外键可以把customerinfo表中的CustomerID映射到salesinfo表中的CustomerID,任何的一条没有合法CustomerID的记录都不会被更新或者插入到salesinfo中。

CREATE TABLE customerinfo( CustomerIDINT NOT

NULL,PRIMARYKEY(CustomerID))TYPE=INNODB;

CREATE TABLE salesinfo( SalesIDNT NOT NULL,CustomerIDINT NOT NULL, PRIMARYKEY(CustomerID,SalesID),

FOREIGNKEY(CustomerID) REFERENCES customerinfo(CustomerID) ON DELETE CASCADE)TYPE=INNODB;

注意例子中的参数“ON DELETE CASCADE”。该参数保证当customerinfo表中的一条客户记录被删除的时候,salesinfo表中所有与该客户相关的记录也会被自动删除。如果要在MySQL中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表InnoDB类型。该类型不是MySQL表的默认类型。定义的方法是在CREATETABLE语句中加上TYPE=INNODB

使用索引

索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。

一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。对于一个ENUM类型的字段来说,出现大量重复值是很有可能的情况

例如customerinfo中的“province”..字段,在这样的字段上建立索引将不会有什么帮助;相反,还有可能降低数据库的性能。我们在创建表的时候可以同时创建合适的索引,也可以使用ALTERTABLE或CREATEINDEX在以后创建索引。此外,MySQL从版本3.23.23开始支持全文索引和搜索。全文索引在MySQL中是一个FULLTEXT类型索引,但仅能用于MyISAM类型的表。对于一个大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX创建索引,将是非常快的。但如果将数据装载到一个已经有FULLTEXT索引的表中,执行过程将会非常慢。

优化查询语句

绝大多数的情况下,使用索引可以提高查询的速度,但是SQL语句使用不恰当的话,索引将无法发挥它应有的作用。

在相同类型的字段间进行比较的操作。

在建有索引的字段上尽量不要使用函数进行操作。

例如:在一个date类型的字段上使用yeae()函数时,将会使索引不能发挥应有的作用。

3.在搜索字符型字段时,我们有时会使用like关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。后者的查询速度明显比前者快得多。

SELECT * FROM books WHERE name like"MySQL%"

SELECT * FROM books WHERE name>="MySQL" andname <"MySQM"

最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用。

仔细再看了一下这个执行计划,果然发现了猫腻,执行计划中有一个reconsidering_access_paths_for_index_ordering选择引起了我的注意

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "reconsidering_access_paths_for_index_ordering": {
    "clause": "ORDER BY",
    "index_order_summary": {
      "table": "`rebate_order_info`",
      "index_provides_order": true,
      "order_direction": "asc",
      "index": "PRIMARY", // 可以看到选择了主键索引
      "plan_changed": true,
      "access_type": "index_scan"
        }
    }
}

这个选择表示由于排序的原因再进行了一次索引选择优化,由于我们的 SQL 使用了 id 排序(order by id asc limit 1),优化器最终选择了 PRIMARY 也就是全表扫描来执行,也就是说这个选择会无视之前的基于索引成本的选择,为什么会有这样的一个选项呢,主要原因如下:

The short explanation is that the optimizer thinks — or should I say hopes — that scanning the whole table (which is already sorted by the id field) will find the limited rows quick enough, and that this will avoid a sort operation. So by trying to avoid a sort, the optimizer ends-up losing time scanning the table.

从这段解释可以看出主要原因是由于我们使用了order by id asc这种基于 id 的排序写法,优化器认为排序是个昂贵的操作,所以为了避免排序,并且它认为 limit n 的 n 如果很小的话即使使用全表扫描也能很快执行完,所以它选择了全表扫描,也就避免了 id 的排序(全表扫描其实就是基于 id 主键的聚簇索引的扫描,本身就是基于 id 排好序的)

另外,关注公号“终码一生”,回复关键词“资料”,获取视频教程和最新的面试资料!

如果这个选择是对的那也罢了,然而实际上这个优化却是有 bug 的!实际选择 idx_uid_stat 执行会快得多(只要 28 ms)!网上有不少人反馈这个问题,而且出现这个问题基本只与 SQL 中出现order by id asc limit n这种写法有关,如果 n 比较小很大概率会走全表扫描,如果 n 比较大则会选择正确的索引。

这个 bug 最早追溯到 2014 年,不少人都呼吁官方及时修正这个bug,可能是实现比较困难,直到 MySQL 5.7,8.0 都还没解决,所以在官方修复前我们要尽量避免这种写法,如果一定要用这种写法,怎么办呢,主要有两种方案

1.使用 force index 来强制使用指定的索引,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from order_info force index(idx_uid_stat) where uid = 5837661 order by id asc limit 1

这种写法虽然可以,但不够优雅,如果这个索引被废弃了咋办?于是有了第二种比较优雅的方案

2.使用 order by (id+0) 方案,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from order_info where uid = 5837661 order by (id+0) asc limit 1

这种方案也可以让优化器选择正确的索引,更推荐!为什么这个 trick 可以呢,因为此 SQL 虽然是按 id 排序的,但在 id 上作了加法这样耗时的操作(虽然只是加个无用的 0,但足以骗过优化器),优化器认为此时基于全表扫描会更耗性能,于是会选择基于成本大小的方式来选择索引

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 终码一生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
堡垒机和防火墙有什么区别?
堡垒机针对内部运维人员的运维安全审计系统。主要的功能是对运维人员的运维操作进行审计和权限控制。同时堡垒机还有账号集中管理,单点登陆的功能。
青果云小潘
2019/11/05
1.6K0
堡垒机和防火墙有什么区别?
网络安全设备分类清单
主要介绍当前市面企业中常用的安全设备进行分类,因为个人的接触主要以深信服,天融信,绿盟产品进行分类对比;
全栈工程师修炼指南
2022/09/28
7.5K0
网络安全设备分类清单
堡垒机之防黑客攻击的安全防护办法
堡垒机是一个提供服务器和网络安全控制的系统,可以实现对4A运行资源的全面安全控制。本系统包含了用户管理、资源管理、策略、审核和工单等功能模块,支持安全控制和保护一些常用的服务器主机以及一些环境。该系统是集统一资产管理和单点登录、多终端访问协议、文件传输功能于一体的运行安全管理和审计产品。
技术分享达人
2021/03/15
1.2K0
堡垒机之防黑客攻击的安全防护办法
堡垒机如何登录服务器?堡垒机和防火墙有何不同?
大家都知道防火墙,但对于堡垒机可能会比较陌生。其实越来越多的公司和企业都选择使用堡垒机。那么,堡垒机如何登录服务器?堡垒机和防火墙有何不同?这些问题都是大家比较感兴趣的,下面请看下文介绍。
用户8715145
2021/10/21
1.3K0
什么是堡垒机?为什么需要堡垒机?
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
用户2781897
2020/11/02
7.8K0
什么是堡垒机?为什么需要堡垒机?
堡垒机如何与服务器连接?新手必知操作步骤
堡垒机对于保护企业内部网络安全有很大的作用,比防火墙的保护更灵活一些,所以现在越来越受企业欢迎。不过,因为对堡垒机认知不够,导致一些人不会操作,比如说有一部分人不知道堡垒机如何与服务器连接,那么接下来就针对这个问题为大家做一下简单的解答。
用户8715145
2021/12/29
3.1K0
网络安全第四讲 防火墙工作原理及应用
网络信息安全第四讲 防火墙工作原理及应用 一 防火墙概念与分类 1.防火墙简介 防火墙允许授权的数据通过,而拒绝未经授权的数据通信。网络防火墙是隔离内部网与Internet之间的一道防御系统,允许人们在内部网和开放的Internet之间通信。访问者必须首先穿越防火墙的安全防线,才能接触目标计算机。 在没有防火墙时,局域网内部的每个节点都暴露给Internet上的其它主机,此时内部网的安全性要由每个节点的坚固程度来决定,且安全性等同于其中最薄弱的节点。使用防火墙后,防火墙会将内部网的安全性统一到它自身,网络安
易兮科技
2020/10/28
6.3K0
网络安全第四讲 防火墙工作原理及应用
堡垒机和服务器有什么区别?堡垒机可以在哪里购买?
在互联网行业中信息安全是非常重要的,有些信息一旦泄露出去就会造成巨大的损失,所以在互联网发达的今天很多公司也都会使用很多办法来保护内部的信息安全。接触过互联网的人肯定都听说过服务器,互联网需要服务器的支持才能让用户们正常使用,在很多公司内部出了服务器之外还会部署堡垒机,从公司内部信息不会被泄露,方便了公司运维以及审计工作,那么堡垒机和服务器有什么区别?堡垒机可以在哪里购买?
用户8715145
2021/11/11
2.2K0
堡垒机、云堡垒机,也就那么回事,没啥不好理解的!
堡垒机是种具备强大防御功能和安全审计功能的服务器。基于跳板机理念,作为内外网络的个安全审计监测点,以达到把所有网站安全问题集中到某台服务器上解决,从而省时省力,同时,运维堡垒机还具备了对运维人员的远程登录进行集中管理的功能作用。
网络技术联盟站
2023/03/01
1.5K0
堡垒机、云堡垒机,也就那么回事,没啥不好理解的!
使用反向代理发布内网服务
DMZ是英文“demilitarizedzone”的缩写,中文名称为“隔离区”,也称“非军事化区”。它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区,这个缓冲区位于企业内部网络和外部网络之间的小网络区域内,在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和论坛等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络,因为这种网络部署,比起一般的防火墙方案,对攻击者来说又多了一道关卡。 通过DMZ区域设置反向代
张善友
2018/01/31
7990
云服务器用什么堡垒机?哪种堡垒机性价比最高?
现在很多互联网公司里面都是需要用到各种服务器的,为了节省成本现在的中小型公司都会选择使用云服务器,这样只需要支付很少的费用就可以保障公司的网络正常运行,不过使用云服务器也是需要部署堡垒机的,这样才能保证公司内部的信息安全,那么云服务器用什么堡垒机?哪种堡垒机性价比最高?下面小编就为大家介绍一下。
用户8715145
2021/12/08
5.6K0
如何通过堡垒机访问服务器?堡垒机有什么用?
对于一些较大的互联网型企业来说,服务器的规模通常也是比较大的。要想将这些服务器得到安全有效的管理,是每个运维人员都需要去考虑的问题。比较常见的方式就是搭建堡垒机,将其作为线上服务器的入口,然后通过堡垒机来进行访问,就可以确保其安全性。那么,如何通过堡垒机访问服务器?关于这个问题,下面我们一起来了解一下。
用户8715145
2021/10/21
5K0
堡垒机和服务器的区别 堡垒机的主要特色功能有哪些
在信息化技术不断发展的企业当中,大数据统一被放置在企业服务器或者网络设备当中,很多企业的内网信息和资料文件无时无刻存在着被攻击和泄露的风险,运维人员的的登录操作无法追根溯源,一旦出现什么问题,也很难根据事件后果来追责。堡垒机和服务器的区别是很大的,了解他们的区别之前,要先了解堡垒机和服务器都是干什么的。
用户8715145
2021/11/12
9030
访问堡垒机服务器的时候报认证失败的错误,该怎么解决?
现在有很多大型互联网企业都会用到堡垒机,堡垒机相对于防火墙来说更加的灵活,一旦有外部入侵就会有报警处理,可以确保企业的内部网络安全。不过,在使用堡垒机服务器的过程中,可能会出现很多问题,比如说访问堡垒机服务器的时候报认证失败的错误,出现这样的错误该怎么解决呢?
用户8715145
2021/12/06
3.1K0
堡垒机连接服务器正常但是黑屏怎么回事?该怎么处理?
公司在买入了堡垒机之后,就要对堡垒机以及其他的服务器进行一系列的设置。企业买了堡垒机,主要的作用是来保障公司内部运维网络的安全。运维人员可以进入公司内部的系统,而很多运维人员可能是第三方公司的,所以这样对公司的机密文件非常不利,有一些隐患。堡垒机的出现就是为了解决这些问题。让运维人员的系统操作,可以得到有效的监控。堡垒机连接服务器正常但是黑屏是怎么回事呢?
用户8715145
2021/12/09
3.1K0
堡垒机远程不上服务器的原因 连接不上怎么办?
堡垒机对于企业的运维系统的安全审计,和管理控制功能是显而易见的,堡垒机也成了许多的大中小型企业必备的网络服务项目之一,但是在使用堡垒机的过程当中,总是会出现一些操作上的问题以及使用中的问题。出现这些问题要及时解决,否则会给堡垒机的作用带来不好的影响,堡垒机远程不上服务器是怎么回事呢?
用户8715145
2021/12/11
14.8K0
堡垒机如何管理服务器 堡垒机的核心功能有哪些
堡垒机现在已经是很多企业的刚需产品,很多企业在面对庞大的数据库和难以管理的内网系统访问风险时无所适从,而堡垒机通过它的核心功能审计系统,帮很多企业解决了这一难题。堡垒机如何管理服务器,它的运作模式是比较简单的,把公司和企业内部对网络和服务器的访问者全都审核权限,从而决定哪些账号可以进入系统进行操作。
用户8715145
2021/11/12
9730
服务器堡垒机怎么样?服务器堡垒机具体有哪些功能?
平时生活中大家肯定都听说过黑客攻击公司内部网络的事情,遭遇了黑客攻击就有可能面对大量信息泄露的结果,如果是一些重要的公司信息泄露出去之后后果是很严重的,所以处于互联网时代的企业往往都会对信息进行多重保护,除了会为公司网络搭建强大的防火墙之外,很多公司里面还会给网络服务器部署堡垒机,能够提高公司内部网络的安全,那么服务器堡垒机怎么样?服务器堡垒机具体有哪些功能?
用户8715145
2021/11/11
1.2K0
搭建简易堡垒机
堡垒机,是在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的***和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
端碗吹水
2020/09/23
2.2K0
搭建简易堡垒机
scrt通过堡垒机连服务器有哪些好处?如何实现堡垒机连接服务器?
现代很多企业办公都离不开互联网,但是由于互联网中的数据比较驳杂,为了防止公司内部的数据遭受来自互联网的攻击,很多企业都会通过堡垒机将外网和内网进行分隔。那么scrt通过堡垒机连服务器有哪些好处?如何实现堡垒机连接服务器呢?
用户8715145
2021/12/06
2.2K0
推荐阅读
相关推荐
堡垒机和防火墙有什么区别?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档