我们在上一篇博文中探讨了数据库索引背后的理论,在本文中,我们将看到在实践中学到了什么
我们要做什么?:
1-启动 postgreSQL docker 容数据库索器
2-插入 1 亿行随机值
3- 查询一些没有任何索引的随机行并测量性能
4-创建索引并执行另一个查询,并将性能与没有索引时数据库索进行比较
先决条件:
- 我假设你的机器上已经安装
- 此外,共享的命令是命令,一些简单的 搜索可以为您提供适用于 Windows 或任何其他操作系统的命令
事不宜迟,我们开始吧!
1-启动 postgreSQL docker 容器
这会将 docker 容器中的端口号 5432 绑定到你自己机器数 企业主数据库 据库索上的端口 5432,这样每当你数据库索的机器在端口 5432 上收到请求时,它也会将其转发到端口 5432 上的这个容器
2- 插入大量随机行
接下来我们需要直接在容器中执 它涉及分析用户表达的背景 行命令,以下命令将执行此操作:
该命令将执行命令并数据库索在我们的容器中打开一个交互式终端,当您看到以下内容时,您就会看到:
3- 不使用任何索引查询表
我们在这里做的是查询,同时分析查询性能,请 cl 列表 注意,我们使用没有索引的工资列来过滤查询
你可以看到,数据库引擎必须执行一项名为“对员工进数据库索行并行顺序扫描”的操作,这基本上意味着必须逐一扫描整个 100,000,000 行数据。实际上,数据库引擎很聪明,可以并行执行这项操作,即将表分成多个部分,并为每个部分启动一个线程/进程来扫描它。
上面的重点部分是:
这超过了 18 秒!对于实时生产数据库索数据库来说,这已经是很长的时间了
现在让我们在工资列上数据库索创建一个索引,即我们用来过滤选择查询的列
此命令将需要一段时间才能执行,同样,100,0000,000 行对于索引来数据库索说也是很多行,但它的一次性成本
现在让我们尝数据库索试使用随机工资过滤器查询另一行并查看性
这基本上意味数据库索着数据库引擎不必扫描整个表,而是扫描索引,这解释了查数据库索询执行时间几乎快了 1000 倍。