blob: d8e809cc879b137ad0332bbd793eb53b2d30f36f [file] [log] [blame]
<!doctype html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-beta.66" />
<meta name="theme" content="VuePress Theme Hope" />
<meta property="og:url" content="https://iotdb.apache.org/zh/UserGuide/Master/Tools-System/Benchmark.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="概述"><meta property="og:description" content="IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它使用方便,支持多种写入以及查询方式,支持存储测试信息和结果以供进一步查询或分析,支持与 Tableau 集成以可视化测试结果。 下图1-1囊括了测试基准流程及其他扩展功能。这些流程可以由IoT-benchmark 统一来完成。IoT ..."><meta property="og:type" content="article"><meta property="og:locale" content="zh-CN"><meta property="og:updated_time" content="2023-07-25T09:36:26.000Z"><meta property="article:modified_time" content="2023-07-25T09:36:26.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"概述","image":[""],"dateModified":"2023-07-25T09:36:26.000Z","author":[]}</script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><title>概述 | IoTDB Website</title><meta name="description" content="IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它使用方便,支持多种写入以及查询方式,支持存储测试信息和结果以供进一步查询或分析,支持与 Tableau 集成以可视化测试结果。 下图1-1囊括了测试基准流程及其他扩展功能。这些流程可以由IoT-benchmark 统一来完成。IoT ...">
<style>
:root {
--bg-color: #fff;
}
html[data-theme="dark"] {
--bg-color: #1d1e1f;
}
html,
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<link rel="preload" href="/assets/style-35dc1830.css" as="style"><link rel="stylesheet" href="/assets/style-35dc1830.css">
<link rel="modulepreload" href="/assets/app-d4806199.js"><link rel="modulepreload" href="/assets/Benchmark.html-fe39088a.js"><link rel="modulepreload" href="/assets/Benchmark.html-c08cc066.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">跳至主要內容</a><!--]--><!--[--><div class="theme-container no-sidebar has-toc"><!--[--><header id="navbar" class="vp-navbar hide-icon"><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><!----><!--]--><!--[--><a class="vp-link vp-brand" href="/zh/"><img class="vp-nav-logo" src="/logo.png" alt="IoTDB Website"><!----><span class="vp-site-name hide-in-pad">IoTDB Website</span></a><!--]--><!--[--><!----><!--]--></div><div class="vp-navbar-center"><!--[--><!----><!--]--><!--[--><!--]--><!--[--><!----><!--]--></div><div class="vp-navbar-end"><!--[--><!----><!--]--><!--[--><div id="docsearch-container"></div><nav class="vp-nav-links"><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button type="button" class="dropdown-title" aria-label="文档"><span class="title"><!---->文档</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/UserGuide/V1.1.x/QuickStart/QuickStart.html"><!---->v1.1.x<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/UserGuide/V1.0.x/QuickStart/QuickStart.html"><!---->v1.0.x<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/UserGuide/V0.13.x/QuickStart/QuickStart.html"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177051872" rel="noopener noreferrer" target="_blank" aria-label="系统设计" class="nav-link"><!---->系统设计<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="nav-item hide-in-mobile"><a class="vp-link nav-link" href="/zh/Download/"><!---->下载<!----></a></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button type="button" class="dropdown-title" aria-label="社区"><span class="title"><!---->社区</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Community/About.html"><!---->关于社区<!----></a></li><li class="dropdown-item"><a href="https://cwiki.apache.org/confluence/display/iotdb" rel="noopener noreferrer" target="_blank" aria-label="Wiki" class="nav-link"><!---->Wiki<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Community/Community-Project-Committers.html"><!---->开发人员<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Community/Community-Powered-By.html"><!---->技术支持<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/Community/Materials.html"><!---->活动与报告<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Community/Feedback.html"><!---->交流与反馈<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button type="button" class="dropdown-title" aria-label="开发"><span class="title"><!---->开发</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/VoteRelease.html"><!---->如何投票<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/HowToCommit.html"><!---->如何提交代码<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/HowToJoin.html"><!---->成为Contributor<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/Committer.html"><!---->成为Committer<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/ContributeGuide.html"><!---->项目开发指南<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/HowtoContributeCode.html"><!---->技术贡献指南<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/format-changelist.html"><!---->TsFile的更改列表<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link" href="/zh/Development/rpc-changelist.html"><!---->RPC变更清单<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button type="button" class="dropdown-title" aria-label="ASF"><span class="title"><!---->ASF</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="https://www.apache.org/" rel="noopener noreferrer" target="_blank" aria-label="基金会" class="nav-link"><!---->基金会<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/licenses/" rel="noopener noreferrer" target="_blank" aria-label="许可证" class="nav-link"><!---->许可证<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/security/" rel="noopener noreferrer" target="_blank" aria-label="安全" class="nav-link"><!---->安全<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/sponsorship.html" rel="noopener noreferrer" target="_blank" aria-label="赞助" class="nav-link"><!---->赞助<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/thanks.html" rel="noopener noreferrer" target="_blank" aria-label="致谢" class="nav-link"><!---->致谢<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/events/current-event" rel="noopener noreferrer" target="_blank" aria-label="活动" class="nav-link"><!---->活动<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li></ul></button></div></div></nav><div class="nav-item"><div class="dropdown-wrapper i18n-dropdown"><button type="button" class="dropdown-title" aria-label="选择语言"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a class="vp-link nav-link" href="/"><!---->English<!----></a></li><li class="dropdown-item"><a class="vp-link nav-link active" href="/zh/UserGuide/Master/Tools-System/Benchmark.html"><!---->简体中文<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><button type="button" id="appearance-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="nav-item vp-repo"><a class="vp-repo-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--]--><!--[--><!----><!--]--><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar"><!--[--><!----><!--]--><ul class="vp-sidebar-links"></ul><!--[--><!----><!--]--></aside><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->概述</h1><div class="page-info"><!----><!----><span class="page-date-info" aria-label="写作日期"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span><!----></span><meta property="datePublished" content="2023-07-25T09:36:26.000Z"></span><!----><span class="page-reading-time-info" aria-label="阅读时间"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>大约 16 分钟</span><meta property="timeRequired" content="PT16M"></span><!----><!----></div><hr></div><div class="toc-place-holder"><aside id="toc"><!--[--><!----><!--]--><div class="toc-header">此页内容<button type="button" class="print-button" title="打印"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button></div><div class="toc-wrapper"><ul class="toc-list"><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#"></a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#软件安装与环境搭建">软件安装与环境搭建</a></li><li><ul class="toc-list"><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#iot-benchmark-运行的前置条件">IoT Benchmark 运行的前置条件</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#iot-benchmark-的获取方式">IoT Benchmark 的获取方式</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#iot-benchmark-的测试包结构">IoT Benchmark 的测试包结构</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#iot-benchmark-执行测试">IoT Benchmark 执行测试</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#iot-benchmark-结果说明">IoT Benchmark 结果说明</a></li><!----><!--]--></ul></li><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#主要参数介绍">主要参数介绍</a></li><li><ul class="toc-list"><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#工作模式和操作比例">工作模式和操作比例</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#服务器连接信息">服务器连接信息</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#写入场景构建参数">写入场景构建参数</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#查询场景构建参数">查询场景构建参数</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level3" href="/#测试过程和测试结果持久化">测试过程和测试结果持久化</a></li><!----><!--]--></ul></li><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#写入测试">写入测试</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#查询测试">查询测试</a></li><!----><!--]--><!--[--><li class="toc-item"><a class="vp-link toc-link level2" href="/#其他参数说明">其他参数说明</a></li><!----><!--]--></ul><div class="toc-marker" style="top:-1.7rem;"></div></div><!--[--><!----><!--]--></aside></div><!----><div class="theme-hope-content"><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--><h1 id="概述" tabindex="-1"><a class="header-anchor" href="#概述" aria-hidden="true">#</a> 概述</h1><p>IoT-benchmark 是基于 Java 和大数据环境开发的时序数据库基准测试工具,由清华大学软件学院研发并开源。它使用方便,支持多种写入以及查询方式,支持存储测试信息和结果以供进一步查询或分析,支持与 Tableau 集成以可视化测试结果。</p><p>下图1-1囊括了测试基准流程及其他扩展功能。这些流程可以由IoT-benchmark 统一来完成。IoT Benchmark 支持多种工作负载,包括<strong>纯写入、纯查询、写入查询混合</strong>等,支持<strong>软硬件系统监控、测试指标度量</strong>等监控功能,还实现了<strong>初始化数据库自动化、测试数据分析及系统参数优化</strong>等功能。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=ODBlZTU1ZDZhNjNlYTQ4ZjA4NGQ3NTA0MDRhNjAyODlfdFluUXA4NTQ3Zk5UMVF1MzhaUG1wenVRUFBiQWlOUzRfVG9rZW46Ym94Y252TXZBdlpoT0VRSEVXdkxJZDZtSzNmXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图1-1</p><p>借鉴 YCSB 测试工具将工作负载生成、性能指标测量和数据库接口三个组件分离的设计思想,IoT-benchmark 的模块化设计如图1-2所示。与基于 YCSB 的测试工具系统不同的是,IoT-benchmark 增加了系统监控模块,支持测试数据和系统指标监控数据的持久化。此外也增加了一些特别针对时序数据场景的特殊负载测试功能,如支持物联网场景的批量写入和多种乱序数据写入模式。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MjU1ZjAzNjg0OWVhMzYxZjY5OWNhMTkyMjgxNzFmNzFfc2I0UUJpcTVteHN3eWV5N0p3VWFvNEdqTGJhUG1TQTZfVG9rZW46Ym94Y251Z3NvT29HSWNDVVh6OWJOWnRNY2ljXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图1-2</p><p>目前 IoT-benchmark 支持如下时间序列数据库、版本和连接方式:</p><table><thead><tr><th>数据库</th><th>DB-Engines排名</th><th>版本</th><th>连接方式</th></tr></thead><tbody><tr><td>InfluxDB</td><td>1</td><td>v1.x</td><td>SDK</td></tr><tr><td>v2.0</td><td></td><td></td><td></td></tr><tr><td>TimescaleDB</td><td>5</td><td>--</td><td>jdbc</td></tr><tr><td>OpenTSDB</td><td>8</td><td>--</td><td>Http Request</td></tr><tr><td>QuestDB</td><td>10</td><td>v6.0.7</td><td>jdbc</td></tr><tr><td>TDengine</td><td>13</td><td>2.2.0.2</td><td>jdbc</td></tr><tr><td>VictoriaMetrics</td><td>16</td><td>v1.64.0</td><td>Http Request</td></tr><tr><td>KairosDB</td><td>17</td><td>--</td><td>Http Request</td></tr><tr><td>IoTDB</td><td>19</td><td>v1.0</td><td>jdbc、sessionByTablet、sessionByRecord、sessionByRecords</td></tr><tr><td>v0.13</td><td></td><td></td><td></td></tr></tbody></table><p>表1-1大数据测试基准对比</p><h2 id="" tabindex="-1"><a class="header-anchor" href="#" aria-hidden="true">#</a></h2><h2 id="软件安装与环境搭建" tabindex="-1"><a class="header-anchor" href="#软件安装与环境搭建" aria-hidden="true">#</a> 软件安装与环境搭建</h2><h3 id="iot-benchmark-运行的前置条件" tabindex="-1"><a class="header-anchor" href="#iot-benchmark-运行的前置条件" aria-hidden="true">#</a> IoT Benchmark 运行的前置条件</h3><ol><li>Java 8</li><li>Maven 3.6+</li><li>对应的合适版本的数据库,如 Apache IoTDB 1.0</li></ol><h3 id="iot-benchmark-的获取方式" tabindex="-1"><a class="header-anchor" href="#iot-benchmark-的获取方式" aria-hidden="true">#</a> IoT Benchmark 的获取方式</h3><ul><li><strong>获取二进制包</strong>:进入<a href="https://github.com/thulab/iot-benchmark/releases" target="_blank" rel="noopener noreferrer">https://github.com/thulab/iot-benchmark/releases<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 下载需要的安装包。下载下来为一个压缩文件,选择文件夹解压即可使用。</li><li>源代码编译(可用户 Apache IoTDB 1.0 的测试): <ul><li>第一步(编译 IoTDB Session 最新包):进入官网 <a href="https://github.com/apache/iotdb/tree/rel/1.0" target="_blank" rel="noopener noreferrer">https://github.com/apache/iotdb/tree/rel/1.0<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 下载 IoTDB 源码,在根目录下运行命令 mvn clean package install -pl session -am -DskipTests 编译 IoTDB Session 的最新包。</li><li>第二步(编译 IoTDB Benchmark 测试包):进入官网 <a href="https://github.com/thulab/iot-benchmark" target="_blank" rel="noopener noreferrer">https://github.com/thulab/iot-benchmark<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 下载源码,在根目录下运行 mvn clean package install -pl iotdb-1.0 -am -DskipTests 编译测试 Apache IoTDB 1.0版本的测试包,测试包位置与根目录的相对路径为 ./iotdb-1.0/target/iotdb-1.0-0.0.1/iotdb-1.0-0.0.1</li></ul></li></ul><h3 id="iot-benchmark-的测试包结构" tabindex="-1"><a class="header-anchor" href="#iot-benchmark-的测试包结构" aria-hidden="true">#</a> IoT Benchmark 的测试包结构</h3><p>测试包的目录结构如下图1-3所示。其中测试配置文件为conf/config.properties,<a href="http://xn--benchmark-fp6nz30bboet81fz5rm31ey49a.sh" target="_blank" rel="noopener noreferrer">测试启动脚本为benchmark.sh<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> (Linux &amp; MacOS) 和 benchmark.bat (Windows),详细文件用途见表1-2所示。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=ZWVjNTA3M2JjYTc5MTljMjUyMTgxNTE4YzZkN2Q4ZGZfb0EydkFBWk92ZklRV3J3WUYxNXRYRTFPa1lnTDd4MXlfVG9rZW46Ym94Y25zejVyT2RHWEhTVnY5emM5QUQ1VXNmXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图1-3文件和文件夹列表</p><table><thead><tr><th>名称</th><th>子文件</th><th>用途</th></tr></thead><tbody><tr><td>benchmark.bat</td><td>-</td><td>Windows环境运行启动脚本</td></tr><tr><td><a href="http://benchmark.sh" target="_blank" rel="noopener noreferrer">benchmark.sh<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></td><td>-</td><td>Linux/Mac环境运行启动脚本</td></tr><tr><td>conf</td><td>config.properties</td><td>测试场景配置文件</td></tr><tr><td>logback.xml</td><td>日志输出配置文件</td><td></td></tr><tr><td>lib</td><td>-</td><td>依赖库文件</td></tr><tr><td>LICENSE</td><td>-</td><td>许可文件</td></tr><tr><td>bin</td><td><a href="http://startup.sh" target="_blank" rel="noopener noreferrer">startup.sh<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></td><td>初始化脚本文件夹</td></tr><tr><td><a href="http://ser-benchmark.sh" target="_blank" rel="noopener noreferrer">ser-benchmark.sh<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></td><td>-</td><td>监控模式启动脚本</td></tr></tbody></table><p>表1-2文件和文件夹列表用途</p><h3 id="iot-benchmark-执行测试" tabindex="-1"><a class="header-anchor" href="#iot-benchmark-执行测试" aria-hidden="true">#</a> IoT Benchmark 执行测试</h3><ol><li>按照测试需求修改配置文件,主要参数介绍见 1.2 节,对应配置文件为conf/config.properties,<strong>比如测试****Apache</strong> <strong>IoTDB 1.0,则需要修改 DB_SWITCH=IoTDB-100-SESSION_BY_TABLET</strong></li><li>启动被测时间序列数据库</li><li>通过运行</li><li>启动IoT-benchmark执行测试。执行中观测被测时间序列数据库和IoT-benchmark状态,执行完毕后查看结果和分析测试过程。</li></ol><h3 id="iot-benchmark-结果说明" tabindex="-1"><a class="header-anchor" href="#iot-benchmark-结果说明" aria-hidden="true">#</a> IoT Benchmark 结果说明</h3><p>测试的所有日志文件被存放于 logs 文件夹下,测试的结果在测试完成后被存放到 data/csvOutput 文件夹下,例如测试后我们得到了如下的结果矩阵:</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MzI4OTkxNjVjNmY4ZDg5YzRkMzYwYzI4NWIxYWVmNjJfeEk0Y1VGOE9OR0xqUE1jZjhKRERDdlVZSjdsRm4waXNfVG9rZW46Ym94Y25pcWI3VDltV1BMUHJLSGxKQ0VacGxnXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><ul><li>Result Matrix <ul><li>OkOperation:成功的对应操作次数</li><li>OkPoint:对于写入操作,是成功写入的点数;对于查询操作,是成功查询到的点数。</li><li>FailOperation:失败的对应操作次数</li><li>FailPoint:对于写入操作是写入失败的点数</li></ul></li><li>Latency(mx) Matrix <ul><li>AVG:操作平均耗时</li><li>MIN:操作最小耗时</li><li>Pn:操作整体分布的对应分位值,比如P25是下四分位数</li></ul></li></ul><h2 id="主要参数介绍" tabindex="-1"><a class="header-anchor" href="#主要参数介绍" aria-hidden="true">#</a> 主要参数介绍</h2><p>本节重点解释说明了主要参数的用途和配置方法。</p><h3 id="工作模式和操作比例" tabindex="-1"><a class="header-anchor" href="#工作模式和操作比例" aria-hidden="true">#</a> 工作模式和操作比例</h3><ul><li><p>工作模式参数“BENCHMARK_WORK_MODE”可选项为“默认模式”和“服务器监控”;其中“服务器监控”模式可直接通过执行ser-benchmark.sh脚本启动,脚本会自动修改该参数。“默认模式”为常用测试模式,结合配置OPERATION_PROPORTION参数达到“纯写入”、“纯查询”和“读写混合”的测试操作比例定义</p></li><li><p>当运行ServerMode来执行被测时序数据库运行环境监控时IoT-benchmark依赖sysstat软件相关命令;如果需要持久化测试过程数据时选择MySQL或IoTDB,则需要安装该类数据库;ServerMode和CSV的记录模式只能在Linux系统中使用,记录测试过程中的相关系统信息。因此我们建议使用MacOs或Linux系统,本文以Linux(Centos7)系统为例,如果使用Windows系统,可以使用conf文件夹下的benchmark.bat脚本启动IoT-benchmark。</p></li></ul><p>表1-3测试模式</p><table><thead><tr><th>模式名称</th><th>BENCHMARK_WORK_MODE</th><th>模式内容</th></tr></thead><tbody><tr><td>常规测试模式</td><td>testWithDefaultPath</td><td>支持多种读和写操作的混合负载</td></tr><tr><td>服务器资源使用监控模式</td><td>serverMODE</td><td>服务器资源使用监控模式(该模式下运行通过ser-benchmark.sh脚本启动,无需手动配置该参数</td></tr></tbody></table><h3 id="服务器连接信息" tabindex="-1"><a class="header-anchor" href="#服务器连接信息" aria-hidden="true">#</a> 服务器连接信息</h3><p>工作模式指定后,被测时序数据库的信息要如何告知IoT-benchmark呢?当前通过“DB_SWITCH”告知被测时序数据库类型;通过“HOST”告知被测时序数据库网络地址;通过“PORT”告知被测时序数据库网络端口;通过“USERNAME”告知被测时序数据库登录用户名;通过“PASSWORD”告知被测时序数据库登录用户的密码;通过“DB_NAME”告知被测时序数据库名称;通过“TOKEN”告知被测时序数据库连接认证Token(InfluxDB 2.0使用);</p><h3 id="写入场景构建参数" tabindex="-1"><a class="header-anchor" href="#写入场景构建参数" aria-hidden="true">#</a> 写入场景构建参数</h3><p>表1-4写入场景构建参数</p><table><thead><tr><th>参数名称</th><th>类型</th><th>示例</th><th>系统描述</th></tr></thead><tbody><tr><td>CLIENT_NUMBER</td><td>整数</td><td>100</td><td>客户端总数</td></tr><tr><td>GROUP_NUMBER</td><td>整数</td><td>20</td><td>存储组的数量;仅针对IoTDB。</td></tr><tr><td>DEVICE_NUMBER</td><td>整数</td><td>100</td><td>设备总数</td></tr><tr><td>SENSOR_NUMBER</td><td>整数</td><td>300</td><td>每个设备的传感器总数</td></tr><tr><td>INSERT_DATATYPE_PROPORTION</td><td>字符串</td><td>1:1:1:1:1:1</td><td>设备的数据类型比例,BOOLEAN:INT32:INT64:FLOAT:DOUBLE:TEXT</td></tr><tr><td>POINT_STEP</td><td>整数</td><td>1000</td><td>数据间时间戳间隔,即生成的数据两个时间戳之间的固定长度。</td></tr><tr><td>OP_MIN_INTERVAL</td><td>整数</td><td>0</td><td>操作最小执行间隔:若操作耗时大于该值则立即执行下一个,否则等待 (OP_MIN_INTERVAL-实际执行时间) ms;如果为0,则参数不生效;如果为-1,则其值和POINT_STEP一致</td></tr><tr><td>IS_OUT_OF_ORDER</td><td>布尔</td><td>false</td><td>是否乱序写入</td></tr><tr><td>OUT_OF_ORDER_RATIO</td><td>浮点数</td><td>0.3</td><td>乱序写入的数据比例</td></tr><tr><td>BATCH_SIZE_PER_WRITE</td><td>整数</td><td>1</td><td>批写入数据行数(一次写入多少行数据)</td></tr><tr><td>START_TIME</td><td>时间</td><td>2022-10-30T00:00:00+08:00</td><td>写入数据的开始时间戳;以该时间戳为起点开始模拟创建数据时间戳。</td></tr><tr><td>LOOP</td><td>整数</td><td>86400</td><td>总操作次数:具体每种类型操作会按OPERATION_PROPORTION定义的比例划分</td></tr><tr><td>OPERATION_PROPORTION</td><td>字符</td><td>1:0:0:0:0:0:0:0:0:0:0</td><td># 各操作的比例,按照顺序为 写入:Q1:Q2:Q3:Q4:Q5:Q6:Q7:Q8:Q9:Q10, 请注意使用英文冒号。比例中的每一项是整数。</td></tr></tbody></table><p>按照表1-4配置参数启动可描述测试场景为:向被测时序数据库压力写入30000个(100个设备,每个设备300个传感器)时间序列2022年10月30日一天的顺序数据,总计25.92亿个数据点。其中每个设备的300个传感器数据类型分别为50个布尔、50个整数、50个长整数、50个浮点、50个双精度、50个字符。如果我们将表格中IS_OUT_OF_ORDER的值改为true,那么他表示的场景为:向被测时序数据库压力写入30000个时间序列2022年10月30日一天的数据,其中存在30%的乱序数据(到达时序数据库时间晚于其他生成时间晚于自身的数据点)。</p><h3 id="查询场景构建参数" tabindex="-1"><a class="header-anchor" href="#查询场景构建参数" aria-hidden="true">#</a> 查询场景构建参数</h3><p>表1-5查询场景构建参数</p><table><thead><tr><th>参数名称</th><th>类型</th><th>示例</th><th>系统描述</th></tr></thead><tbody><tr><td>QUERY_DEVICE_NUM</td><td>整数</td><td>2</td><td>每条查询语句中查询涉及到的设备数量</td></tr><tr><td>QUERY_SENSOR_NUM</td><td>整数</td><td>2</td><td>每条查询语句中查询涉及到的传感器数量</td></tr><tr><td>QUERY_AGGREGATE_FUN</td><td>字符</td><td>count</td><td>在聚集查询中使用的聚集函数,比如count、avg、sum、max_time等</td></tr><tr><td>STEP_SIZE</td><td>整数</td><td>1</td><td>时间过滤条件的时间起点变化步长,若设为0则每个查询的时间过滤条件是一样的,单位:POINT_STEP</td></tr><tr><td>QUERY_INTERVAL</td><td>整数</td><td>250000</td><td>起止时间的查询中开始时间与结束时间之间的时间间隔,和Group By中的时间间隔</td></tr><tr><td>QUERY_LOWER_VALUE</td><td>整数</td><td>-5</td><td>条件查询子句时的参数,where xxx &gt; QUERY_LOWER_VALUE</td></tr><tr><td>GROUP_BY_TIME_UNIT</td><td>整数</td><td>20000</td><td>Group by语句中的组的大小</td></tr><tr><td>LOOP</td><td>整数</td><td>10</td><td>总操作次数:具体每种类型操作会按OPERATION_PROPORTION定义的比例划分</td></tr><tr><td>OPERATION_PROPORTION</td><td>字符</td><td>0:0:0:0:0:0:0:0:0:0:1</td><td>写入:Q1:Q2:Q3:Q4:Q5:Q6:Q7:Q8:Q9:Q10</td></tr></tbody></table><p>表1-6查询类型及示例 SQL</p><table><thead><tr><th>编号</th><th>查询类型</th><th>IoTDB 示例 SQL</th></tr></thead><tbody><tr><td>Q1</td><td>精确点查询</td><td>select v1 from root.db.d1 where time = ?</td></tr><tr><td>Q2</td><td>时间范围查询</td><td>select v1 from root.db.d1 where time &gt; ? and time &lt; ?</td></tr><tr><td>Q3</td><td>带值过滤的时间范围查询</td><td>select v1 from root.db.d1 where time &gt; ? and time &lt; ? and v1 &gt; ?</td></tr><tr><td>Q4</td><td>时间范围聚合查询</td><td>select count(v1) from root.db.d1 where and time &gt; ? and time &lt; ?</td></tr><tr><td>Q5</td><td>带值过滤的全时间范围聚合查询</td><td>select count(v1) from root.db.d1 where v1 &gt; ?</td></tr><tr><td>Q6</td><td>带值过滤的时间范围聚合查询</td><td>select count(v1) from root.db.d1 where v1 &gt; ? and time &gt; ? and time &lt; ?</td></tr><tr><td>Q7</td><td>时间分组聚合查询</td><td>select count(v1) from root.db.d1 group by ([?, ?), ?, ?)</td></tr><tr><td>Q8</td><td>最新点查询</td><td>select last v1 from root.db.d1</td></tr><tr><td>Q9</td><td>倒序范围查询</td><td>select v1 from root.sg.d1 where time &gt; ? and time &lt; ? order by time desc</td></tr><tr><td>Q10</td><td>倒序带值过滤的范围查询</td><td>select v1 from root.sg.d1 where time &gt; ? and time &lt; ? and v1 &gt; ? order by time desc</td></tr></tbody></table><p>按照表1-5配置参数启动可描述测试场景为:从被测时序数据库执行10次2个设备2个传感器的倒序带值过滤的范围查询,SQL语句为:select s_0,s_31from data where time &gt;2022-10-30T00:00:00+08:00 and time &lt; 2022-10-30T00:04:10+08:00 and s_0 &gt; -5 and device in d_21,d_46 order by time desc。</p><h3 id="测试过程和测试结果持久化" tabindex="-1"><a class="header-anchor" href="#测试过程和测试结果持久化" aria-hidden="true">#</a> 测试过程和测试结果持久化</h3><p>IoT-benchmark目前支持通过配置参数“TEST_DATA_PERSISTENCE”将测试过程和测试结果持久化到IoTDB、MySQL和CSV;其中写入到MySQL和CSV可以定义分库分表的行数上限,例如“RECORD_SPLIT=true、RECORD_SPLIT_MAX_LINE=10000000”表示每个数据库表或CSV文件按照总行数为1千万切分存放;如果记录到MySQL或IoTDB需要提供数据库链接信息,分别包括“TEST_DATA_STORE_IP”数据库的IP地址、“TEST_DATA_STORE_PORT”数据库的端口号、“TEST_DATA_STORE_DB”数据库的名称、“TEST_DATA_STORE_USER”数据库用户名、“TEST_DATA_STORE_PW”数据库用户密码。</p><p>如果我们设置“TEST_DATA_PERSISTENCE=CSV”,测试执行时和执行完毕后我们可以在IoT-benchmark根目录下看到新生成的data文件夹,其下包含csv文件夹记录测试过程;csvOutput文件夹记录测试结果。如果我们设置“TEST_DATA_PERSISTENCE=MySQL”,它会在测试开始前在指定的MySQL数据库中创建命名如“testWithDefaultPath_被测数据库名称_备注_测试启动时间”的数据表记录测试过程;会在名为“CONFIG”的数据表(如果不存在则创建该表),写入本次测试的配置信息;当测试完成时会在名为“FINAL_RESULT”的数据表(如果不存在则创建该表)中写入本次测试结果。</p><h1 id="实际案例" tabindex="-1"><a class="header-anchor" href="#实际案例" aria-hidden="true">#</a> 实际案例</h1><p>我们以中车青岛四方车辆研究所有限公司应用为例,参考《ApacheIoTDB在智能运维平台存储中的应用》中描述的场景进行实际操作说明。</p><p>测试目标:模拟中车青岛四方所场景因切换时间序列数据库实际需求,对比预期使用的IoTDB和原有系统使用的KairosDB性能。</p><p>测试环境:为了保证在实验过程中消除其他无关服务与进程对数据库性能的影响,以及不同数据库之间的相互影响,本实验中的本地数据库均部署并运行在资源配置相同的多个独立的虚拟机上。因此,本实验搭建了 4 台 Linux( CentOS7 /x86) 虚拟机,并分别在上面部署了IoT-benchmark、 IoTDB数据库、KairosDB数据库、MySQL数据库。每一台虚拟机的具体资源配置如表2-1所示。每一台虚拟机的具体用途如表2-2所示。</p><p>表2-1虚拟机配置信息</p><table><thead><tr><th>硬件配置信息</th><th>系统描述</th></tr></thead><tbody><tr><td>OS System</td><td>CentOS7</td></tr><tr><td>CPU核数</td><td>16</td></tr><tr><td>内存</td><td>32G</td></tr><tr><td>硬盘</td><td>200G</td></tr><tr><td>网卡</td><td>千兆</td></tr></tbody></table><p>表2-2虚拟机用途</p><table><thead><tr><th>IP</th><th>用途</th></tr></thead><tbody><tr><td>172.21.4.2</td><td>IoT-benchmark</td></tr><tr><td>172.21.4.3</td><td>Apache-iotdb</td></tr><tr><td>172.21.4.4</td><td>KaiosDB</td></tr><tr><td>172.21.4.5</td><td>MySQL</td></tr></tbody></table><h2 id="写入测试" tabindex="-1"><a class="header-anchor" href="#写入测试" aria-hidden="true">#</a> 写入测试</h2><p>场景描述:创建100个客户端来模拟100列车、每列车3000个传感器、数据类型为DOUBLE类型、数据时间间隔为500ms(2Hz)、顺序发送。参考以上需求我们需要修改IoT-benchmark配置参数如表2-3中所列。</p><p>表2-3配置参数信息</p><table><thead><tr><th>参数名称</th><th>IoTDB值</th><th>KairosDB值</th></tr></thead><tbody><tr><td>DB_SWITCH</td><td>IoTDB-013-SESSION_BY_TABLET</td><td>KairosDB</td></tr><tr><td>HOST</td><td>172.21.4.3</td><td>172.21.4.4</td></tr><tr><td>PORT</td><td>6667</td><td>8080</td></tr><tr><td>BENCHMARK_WORK_MODE</td><td>testWithDefaultPath</td><td></td></tr><tr><td>OPERATION_PROPORTION</td><td>1:0:0:0:0:0:0:0:0:0:0</td><td></td></tr><tr><td>CLIENT_NUMBER</td><td>100</td><td></td></tr><tr><td>GROUP_NUMBER</td><td>10</td><td></td></tr><tr><td>DEVICE_NUMBER</td><td>100</td><td></td></tr><tr><td>SENSOR_NUMBER</td><td>3000</td><td></td></tr><tr><td>INSERT_DATATYPE_PROPORTION</td><td>0:0:0:0:1:0</td><td></td></tr><tr><td>POINT_STEP</td><td>500</td><td></td></tr><tr><td>OP_MIN_INTERVAL</td><td>0</td><td></td></tr><tr><td>IS_OUT_OF_ORDER</td><td>false</td><td></td></tr><tr><td>BATCH_SIZE_PER_WRITE</td><td>1</td><td></td></tr><tr><td>LOOP</td><td>10000</td><td></td></tr><tr><td>TEST_DATA_PERSISTENCE</td><td>MySQL</td><td></td></tr><tr><td>TEST_DATA_STORE_IP</td><td>172.21.4.5</td><td></td></tr><tr><td>TEST_DATA_STORE_PORT</td><td>3306</td><td></td></tr><tr><td>TEST_DATA_STORE_DB</td><td>demo</td><td></td></tr><tr><td>TEST_DATA_STORE_USER</td><td>root</td><td></td></tr><tr><td>TEST_DATA_STORE_PW</td><td>admin</td><td></td></tr><tr><td>REMARK</td><td>demo</td><td></td></tr></tbody></table><p>首先在172.21.4.3和172.21.4.4上分别启动被测时间序列数据库Apache-IoTDB和KairosDB,之后在172.21.4.2、172.21.4.3和172.21.4.4上通过ser-benchamrk.sh脚本启动服务器资源监控(图2-1)。然后按照表2-3在172.21.4.2分别修改iotdb-0.13-0.0.1和kairosdb-0.0.1文件夹内的conf/config.properties文件满足测试需求。先后使用benchmark.sh启动对Apache-IoTDB和KairosDB的写入测试。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=YmRjNjEwMzdjOGIwODczNGZjNzQ3MzA0ZGJlMzUwODFfbWNyY014WERmOFNUSVZtSmZVQ0tiTU9qVUI4aWpCQ3dfVG9rZW46Ym94Y256QkhCdDhBYUdjR1lyWkx4VXA4VDNiXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-1服务器监控任务</p><p>​ 例如我们首先启动对KairosDB的测试,IoT-benchmark会在MySQL数据库中创建CONFIG数据表存放本次测试配置信息(图2-2),测试执行中会有日志输出当前测试进度(图2-3)。测试完成时会输出本次测试结果(图2-3),同时将结果写入FINAL_RESULT数据表中(图2-4)。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MDc4MTIxZjMwZGM4OWQxNzZhMTZjNTg4NGVlZGViM2Nfd2dYRzZJM3U5dm9lQmxrUEtBcG15QWQxa1ZxMkc0c0VfVG9rZW46Ym94Y240azkwb0FOMGx0VVFKYzFZV2s4Q2ZnXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-2测试配置信息表</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=NjY5NGExMmVjYmRkNTNiZTk5YjQ3NzJhZjBkM2I0ODRfTEY5TXZKampNa3FOQ0Y2UzVNT0ZiWmFRNkxNTEdZQ0pfVG9rZW46Ym94Y25laEJielRheFpBdGxpdWtWOEFhQ25mXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=OTExMWRiNGExYmE5NGU4NzBlMzFiMDBhYzM2ZGJhZTdfU2lsTlU3elVGb3RlUmZvWDlETmVnb3FYeE1VQzJQZEZfVG9rZW46Ym94Y24zdjJ0U2NVNjU1M2pxNkpCSU15VHNoXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=ODY5Mzk3ZmMxMzliNWU4YjNhYTk4MjcyMmUyYjRhY2RfWjVZb0tZZDVJcllJVkF1UU9mZXk1VlUyV2tWcmZGM2tfVG9rZW46Ym94Y25lYXY2OWVqRVRJdHp0V2NsUHNaR1hiXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MmIzNjc5ZjE2NmEzNDFkZjVmODFmM2IyMThjZTYwNmVfaURYZmpHdnlqTjFtbkk5aEk5alVieEhQcmNEYzBzR3lfVG9rZW46Ym94Y245OEZEY0ozS1RHV2djdmFTTjJMcVBlXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-3测试进度和结果</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MGZkNmEzMWU5ZmVhMTg0MzQ1NzlmM2IyZDY3OWUzY2RfdWUySUF5UmI3SFMwOGNuWk5aSzMxRktJdkJxNnY1VDVfVG9rZW46Ym94Y24yaVRVQVZ1dDROeGUwQlVwMkRoNjJiXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-4测试结果表</p><p>之后我们再启动对Apache-IoTDB的测试,同样的IoT-benchmark会在MySQL数据库CONFIG数据表中写入本次测试配置信息,测试执行中会有日志输出当前测试进度。测试完成时会输出本次测试结果,同时将结果写入FINAL_RESULT数据表中。</p><p>依照测试结果信息我们知道同样的配置写入Apache-IoTDB和KairosDB写入延时时间分别为:55.98ms和1324.45ms;写入吞吐分别为:5,125,600.86点/秒和224,819.01点/秒;测试分别执行了585.30秒和11777.99秒。并且KairosDB有写入失败出现,排查后发现是数据磁盘使用率已达到100%,无磁盘空间继续接收数据。而Apache-IoTDB无写入失败现象,全部数据写入完毕后占用磁盘空间仅为4.7G(如图2-5所示);从写入吞吐和磁盘占用情况上看Apache-IoTDB均优于KairosDB。当然后续还有其他测试来从多方面观察和对比,比如查询性能、文件压缩比、数据安全性等。</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=ODMxYWFkNGQ5OTIzYjQyODY5NjkzMjAwYWIyZTc1Y2FfeFJPU01rTzI3bXJtNFNWalBOYmlCS2h2SWNpdzd0c2NfVG9rZW46Ym94Y25JdU5xbmlFZGF3MzljbzZXMDRpYVc5XzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-5磁盘使用情况</p><p>那么测试过程中各个服务器资源使用情况如何呢?每个写操作具体的表现如何呢?这个时候我们就可以通过安装和使用Tableau来可视化服务器监控表和测试过程记录表内的数据了。Tableau的使用本文不展开介绍,通过它连接测试数据持久化的数据表后具体结果下如图(以Apache-IoTDB为例):</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=ODlhZmVjMzEyYmM2ODYwNzExMGU4Yzc3ZGMwZmFiMWVfTGJhWHczMU5qaks0MzBwSWpha1JRZ3QxZFhtdzBNRVFfVG9rZW46Ym94Y25NNGN0dVVGaFV6SHA2YmppWGlkYjlkXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=NGFjOTAzMjdjMTg3NDg2ZGNjOWRiNzNmNWVlMDAxZjBfRUVBeko2NWhudjUxSnZoWlV0ZURPNEJwd2E5aDM3VnFfVG9rZW46Ym94Y25DTWVLMFpnUXdUVFRXSTZZSVp6M1FjXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-6Tableau可视化测试过程</p><h2 id="查询测试" tabindex="-1"><a class="header-anchor" href="#查询测试" aria-hidden="true">#</a> 查询测试</h2><p>场景描述:在写入测试场景下模拟10个客户端对时序数据库Apache-IoTDB内存放的数据进行全类型查询任务。配置如下:</p><p>表2-4配置参数信息</p><table><thead><tr><th>参数名称</th><th>示例</th></tr></thead><tbody><tr><td>CLIENT_NUMBER</td><td>100</td></tr><tr><td>QUERY_DEVICE_NUM</td><td>2</td></tr><tr><td>QUERY_SENSOR_NUM</td><td>2</td></tr><tr><td>QUERY_AGGREGATE_FUN</td><td>count</td></tr><tr><td>STEP_SIZE</td><td>1</td></tr><tr><td>QUERY_INTERVAL</td><td>250000</td></tr><tr><td>QUERY_LOWER_VALUE</td><td>-5</td></tr><tr><td>GROUP_BY_TIME_UNIT</td><td>20000</td></tr><tr><td>LOOP</td><td>30</td></tr><tr><td>OPERATION_PROPORTION</td><td>0:1:1:1:1:1:1:1:1:1:1</td></tr></tbody></table><p>执行结果:</p><figure><img src="https://apache-iotdb.feishu.cn/space/api/box/stream/download/asynccode/?code=MzJjYTA1OGVjMDdjZDA3YTc0OTNkZTFiNTI5ODNlOGJfRllWNFhrMUhPVjRHV1ZudTR0T1NVSmNWUlQ2bE54UnZfVG9rZW46Ym94Y25TTVVDMjFVc3FDdERXVnZmRkdacTJkXzE2ODU1MTQ5MTM6MTY4NTUxODUxM19WNA" alt="img" tabindex="0" loading="lazy"><figcaption>img</figcaption></figure><p>图2-7查询测试结果</p><h2 id="其他参数说明" tabindex="-1"><a class="header-anchor" href="#其他参数说明" aria-hidden="true">#</a> 其他参数说明</h2><p>之前章节中针对Apache-IoTDB和KairosDB进行写入性能对比,但是用户如果要执行模拟真实写入速率测试该如何配置?测试时间过长该如何控制呢?生成的模拟数据有哪些规律吗?如果IoT-Benchmark服务器配置较低,可以使用多台机器模拟压力输出吗?</p><p>表2-5配置参数信息</p><table><thead><tr><th>场景</th><th>参数</th><th></th><th>说明</th></tr></thead><tbody><tr><td>模拟真实写入速率</td><td>OP_INTERVAL</td><td>-1</td><td>也可输入整数控制操作间隔</td></tr><tr><td>指定测试时长(1小时)</td><td>TEST_MAX_TIME</td><td>3600000</td><td>单位 ms;需要LOOP执行时间大于该值</td></tr><tr><td>定义模拟数据规律:支持全部数据类型,数量平均分类;支持五种数据分布,数量平均分布;字符串长度为10;小数位数为2</td><td>INSERT_DATATYPE_PROPORTION</td><td>1:1:1:1:1:1</td><td>数据类型分布比率</td></tr><tr><td>LINE_RATIO</td><td>1</td><td>线性</td><td></td></tr><tr><td>SIN_RATIO</td><td>1</td><td>傅里叶函数</td><td></td></tr><tr><td>SQUARE_RATIO</td><td>1</td><td>方波</td><td></td></tr><tr><td>RANDOM_RATIO</td><td>1</td><td>随机数</td><td></td></tr><tr><td>CONSTANT_RATIO</td><td>1</td><td>常数</td><td></td></tr><tr><td>STRING_LENGTH</td><td>10</td><td>字符串长度</td><td></td></tr><tr><td>DOUBLE_LENGTH</td><td>2</td><td>小数位数</td><td></td></tr><tr><td>三台机器模拟300台设备数据写入</td><td>BENCHMARK_CLUSTER</td><td>true</td><td>开启多benchmark模式</td></tr><tr><td>BENCHMARK_INDEX</td><td>0、1、3</td><td>以2.3章节写入参数为例:0号负责设备编号0<sub>99数据写入;1号负责设备编号100</sub>199数据写入;2号负责设备点好200~299数据写入;</td><td></td></tr></tbody></table></div><!----><footer class="page-meta"><div class="meta-item edit-link"><a href="https://github.com/apache/iotdb-docs/edit/main/src/zh/UserGuide/Master/Tools-System/Benchmark.md" rel="noopener noreferrer" target="_blank" aria-label="发现错误?在 GitHub 上编辑此页" class="nav-link label"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->发现错误?在 GitHub 上编辑此页<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="meta-item git-info"><div class="update-time"><span class="label">上次编辑于: </span><!----></div><div class="contributors"><span class="label">贡献者: </span><!--[--><!--[--><span class="contributor" title="email: 105700158+wanghui42@users.noreply.github.com">wanghui42</span><!--]--><!--]--></div></div></footer><!----><!----><!----><!--]--></main><!--]--><footer style="padding-bottom:2rem;"><span id="doc-version" style="display:none;">master</span><p style="text-align:center;color:#909399;font-size:12px;margin:0 30px;">Copyright © 2023 The Apache Software Foundation.<br> Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"> We use <a href="https://analytics.google.com">Google Analytics</a> to collect anonymous, aggregated usage information. </p></footer></div><!--]--><!--]--><!----><!--]--></div>
<script type="module" src="/assets/app-d4806199.js" defer></script>
</body>
</html>