blob: 5ec8aa05e9e64ecbc541e08fa5a29fbd8f8eda5a [file] [log] [blame]
<!DOCTYPE html>
<html lang="cn" class="js csstransforms3d">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="generator" content="Hugo 0.70.0" />
<meta name="description" content="">
<meta name="buildDate" content="2021-08-04 11:43:02">
<link rel="shortcut icon" href="https://shardingsphere.apache.org/document/current/img/favicon.png" type="image/x-icon" />
<title>改写引擎 :: ShardingSphere</title>
<link href="https://shardingsphere.apache.org/document/current/css/nucleus.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/font-awesome.min.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/hybrid.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/featherlight.min.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/perfect-scrollbar.min.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/auto-complete.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/theme.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/hugo-theme.css?1628048582" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/theme-black.css?1628048582" rel="stylesheet">
<script src="https://shardingsphere.apache.org/document/current/js/jquery-2.x.min.js?1628048582"></script>
<style type="text/css">
:root #header + #content > #left > #rlblock_left{
display:none !important;
}
</style>
</head>
<body class="" data-url="/cn/features/sharding/principle/rewrite/">
<nav id="sidebar" class="">
<div id="header-wrapper">
<div id="header">
<a href="https://shardingsphere.apache.org/"><img src="https://shardingsphere.apache.org/document/current/img/logo_v2.png" /></a>
</div>
</div>
<div class="highlightable">
<ul class="topics">
<li data-nav-id="/cn/overview/" title="概览" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/overview/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
</i>
<b>1. </b>概览
</a>
</li>
<li data-nav-id="/cn/quick-start/" title="快速入门" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/quick-start/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>2. </b>快速入门
</a>
<ul>
<li data-nav-id="/cn/quick-start/shardingsphere-jdbc-quick-start/" title="ShardingSphere-JDBC" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-jdbc-quick-start/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>2.1. </b>ShardingSphere-JDBC
</a>
</li>
<li data-nav-id="/cn/quick-start/shardingsphere-proxy-quick-start/" title="ShardingSphere-Proxy" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-proxy-quick-start/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>2.2. </b>ShardingSphere-Proxy
</a>
</li>
<li data-nav-id="/cn/quick-start/shardingsphere-scaling-quick-start/" title="ShardingSphere-Scaling(Alpha)" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-scaling-quick-start/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>2.3. </b>ShardingSphere-Scaling(Alpha)
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/" title="概念 &amp; 功能" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3. </b>概念 &amp; 功能
</a>
<ul>
<li data-nav-id="/cn/features/sharding/" title="数据分片" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.1. </b>数据分片
</a>
<ul>
<li data-nav-id="/cn/features/sharding/concept/" title="核心概念" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.1.1. </b>核心概念
</a>
<ul>
<li data-nav-id="/cn/features/sharding/concept/sql/" title="SQL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/sql/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
SQL
</a>
</li>
<li data-nav-id="/cn/features/sharding/concept/sharding/" title="分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分片
</a>
</li>
<li data-nav-id="/cn/features/sharding/concept/configuration/" title="配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/configuration/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
配置
</a>
</li>
<li data-nav-id="/cn/features/sharding/concept/inline-expression/" title="行表达式" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/inline-expression/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
行表达式
</a>
</li>
<li data-nav-id="/cn/features/sharding/concept/key-generator/" title="分布式主键" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/key-generator/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式主键
</a>
</li>
<li data-nav-id="/cn/features/sharding/concept/hint/" title="强制分片路由" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/hint/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
强制分片路由
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/sharding/principle/" title="内核剖析" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.1.2. </b>内核剖析
</a>
<ul>
<li data-nav-id="/cn/features/sharding/principle/parse/" title="解析引擎" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/parse/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
解析引擎
</a>
</li>
<li data-nav-id="/cn/features/sharding/principle/route/" title="路由引擎" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/route/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
路由引擎
</a>
</li>
<li data-nav-id="/cn/features/sharding/principle/rewrite/" title="改写引擎" class="dd-item active">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/rewrite/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
改写引擎
</a>
</li>
<li data-nav-id="/cn/features/sharding/principle/execute/" title="执行引擎" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/execute/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
执行引擎
</a>
</li>
<li data-nav-id="/cn/features/sharding/principle/merge/" title="归并引擎" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/merge/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
归并引擎
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/sharding/use-norms/" title="使用规范" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/use-norms/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.1.3. </b>使用规范
</a>
<ul>
<li data-nav-id="/cn/features/sharding/use-norms/sql/" title="SQL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/use-norms/sql/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
SQL
</a>
</li>
<li data-nav-id="/cn/features/sharding/use-norms/pagination/" title="分页" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/sharding/use-norms/pagination/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分页
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/transaction/" title="分布式事务" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.2. </b>分布式事务
</a>
<ul>
<li data-nav-id="/cn/features/transaction/concept/" title="核心概念" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/concept/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.2.1. </b>核心概念
</a>
<ul>
<li data-nav-id="/cn/features/transaction/concept/2pc-xa-transaction/" title="XA两阶段事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/concept/2pc-xa-transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
XA两阶段事务
</a>
</li>
<li data-nav-id="/cn/features/transaction/concept/base-transaction-seata/" title="Seata 柔性事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/concept/base-transaction-seata/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Seata 柔性事务
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/transaction/principle/" title="实现原理" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/principle/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.2.2. </b>实现原理
</a>
<ul>
<li data-nav-id="/cn/features/transaction/principle/2pc-xa-transaction/" title="XA两阶段事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/principle/2pc-xa-transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
XA两阶段事务
</a>
</li>
<li data-nav-id="/cn/features/transaction/principle/base-transaction-seata/" title="Seata 柔性事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/principle/base-transaction-seata/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Seata 柔性事务
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/transaction/use-norms/" title="使用规范" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/use-norms/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.2.3. </b>使用规范
</a>
<ul>
<li data-nav-id="/cn/features/transaction/use-norms/local-transaction/" title="本地事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/use-norms/local-transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
本地事务
</a>
</li>
<li data-nav-id="/cn/features/transaction/use-norms/2pc-xa-transaction/" title="XA两阶段事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/use-norms/2pc-xa-transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
XA两阶段事务
</a>
</li>
<li data-nav-id="/cn/features/transaction/use-norms/base-transaction-seata/" title="Seata 柔性事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/transaction/use-norms/base-transaction-seata/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Seata 柔性事务
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/readwrite-splitting/" title="读写分离" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/readwrite-splitting/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.3. </b>读写分离
</a>
<ul>
<li data-nav-id="/cn/features/readwrite-splitting/concept/" title="核心概念" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/readwrite-splitting/concept/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.3.1. </b>核心概念
</a>
</li>
<li data-nav-id="/cn/features/readwrite-splitting/use-norms/" title="使用规范" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/readwrite-splitting/use-norms/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.3.2. </b>使用规范
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/governance/" title="分布式治理" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.4. </b>分布式治理
</a>
<ul>
<li data-nav-id="/cn/features/governance/management/" title="治理" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/management/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.4.1 </b>治理
</a>
<ul>
<li data-nav-id="/cn/features/governance/management/registry-center/" title="注册中心" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/management/registry-center/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
注册中心
</a>
</li>
<li data-nav-id="/cn/features/governance/management/dependency/" title="第三方组件依赖" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/management/dependency/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
第三方组件依赖
</a>
</li>
<li data-nav-id="/cn/features/governance/management/change-history/" title="变更历史" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/management/change-history/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
变更历史
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/governance/observability/" title="可观察性" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/observability/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.4.2 </b>可观察性
</a>
<ul>
<li data-nav-id="/cn/features/governance/observability/apm-integration/" title="应用性能监控集成" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/observability/apm-integration/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
应用性能监控集成
</a>
</li>
<li data-nav-id="/cn/features/governance/observability/agent/" title="Agent集成" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/governance/observability/agent/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Agent集成
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/scaling/" title="弹性伸缩" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/scaling/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.5. </b>弹性伸缩
</a>
<ul>
<li data-nav-id="/cn/features/scaling/concept/" title="核心概念" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/scaling/concept/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.5.1. </b>核心概念
</a>
</li>
<li data-nav-id="/cn/features/scaling/principle/" title="实现原理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/scaling/principle/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.5.2. </b>实现原理
</a>
</li>
<li data-nav-id="/cn/features/scaling/use-norms/" title="使用规范" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/scaling/use-norms/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.5.3. </b>使用规范
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/encrypt/" title="数据加密" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/encrypt/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.6. </b>数据加密
</a>
<ul>
<li data-nav-id="/cn/features/encrypt/concept/" title="核心概念" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/encrypt/concept/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.6.1. </b>核心概念
</a>
</li>
<li data-nav-id="/cn/features/encrypt/principle/" title="实现原理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/encrypt/principle/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.6.2. </b>实现原理
</a>
</li>
<li data-nav-id="/cn/features/encrypt/use-norms/" title="使用规范" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/encrypt/use-norms/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.6.3. </b>使用规范
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/shadow/" title="影子库压测" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/shadow/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.7. </b>影子库压测
</a>
<ul>
<li data-nav-id="/cn/features/shadow/concept/" title="核心概念" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/shadow/concept/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.7.1. </b>核心概念
</a>
</li>
<li data-nav-id="/cn/features/shadow/principle/" title="实现原理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/shadow/principle/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.7.2. </b>实现原理
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/dist-sql/" title="Dist SQL" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8. </b>Dist SQL
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/syntax/" title="语法" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8.1. </b>语法
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/" title="RDL 语法" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8.1.1 </b>RDL 语法
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/rdl-resource/" title="数据源资源" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/rdl-resource/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据源资源
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/rdl-sharding-rule/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/rdl-sharding-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/rdl-readwrite-splitting-rule/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/rdl-readwrite-splitting-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/rdl-encrypt-rule/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/rdl-encrypt-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rdl/rdl-db-discovery-rule/" title="数据库发现" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rdl/rdl-db-discovery-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据库发现
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/" title="RQL 语法" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8.1.2 </b>RQL 语法
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/rql-resource/" title="数据源资源" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/rql-resource/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据源资源
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/rql-sharding-rule/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/rql-sharding-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/rql-readwrite-splitting-rule/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/rql-readwrite-splitting-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/rql-encrypt-rule/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/rql-encrypt-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/rql/rql-db-discovery-rule/" title="数据库发现" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/rql/rql-db-discovery-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据库发现
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/dist-sql/syntax/sctl/" title="SCTL 语法" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/sctl/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8.1.3 </b>SCTL 语法
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/syntax/sctl/sctl/" title="SCTL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/sctl/sctl/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
SCTL
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/dist-sql/usage/" title="使用" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/usage/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.8.2 </b>使用
</a>
<ul>
<li data-nav-id="/cn/features/dist-sql/usage/sharding-rule/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/dist-sql/usage/sharding-rule/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/features/pluggable-architecture/" title="可插拔架构" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/pluggable-architecture/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
</i>
<b>3.9. </b>可插拔架构
</a>
</li>
<li data-nav-id="/cn/features/test-engine/" title="测试引擎" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>3.10. </b>测试引擎
</a>
<ul>
<li data-nav-id="/cn/features/test-engine/integration-test/" title="集成测试" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/integration-test/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.9.1. </b>集成测试
</a>
</li>
<li data-nav-id="/cn/features/test-engine/parser-test/" title="SQL 解析测试" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/parser-test/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.9.2. </b>SQL 解析测试
</a>
</li>
<li data-nav-id="/cn/features/test-engine/rewrite-test/" title="SQL 改写测试" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/rewrite-test/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.9.3. </b>SQL 改写测试
</a>
</li>
<li data-nav-id="/cn/features/test-engine/performance-test/" title="性能测试" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/performance-test/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.9.4. </b>性能测试
</a>
</li>
<li data-nav-id="/cn/features/test-engine/performance-test-sysbench/" title="性能测试(sysbench)" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/features/test-engine/performance-test-sysbench/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>3.9.5. </b>性能测试(sysbench)
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/" title="用户手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4. </b>用户手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/" title="ShardingSphere-JDBC" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.1. </b>ShardingSphere-JDBC
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/" title="使用手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.1.1. </b>使用手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/" title="数据分片" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
数据分片
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/java-api/" title="使用 Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/java-api/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Java API
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/yaml/" title="使用 YAML 配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/yaml/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 YAML 配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/spring-boot-starter/" title="使用 Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/spring-boot-starter/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring Boot Starter
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/spring-namespace/" title="使用 Spring 命名空间" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/spring-namespace/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring 命名空间
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/sharding/hint/" title="强制路由" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/sharding/hint/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
强制路由
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/" title="分布式事务" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
分布式事务
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/java-api/" title="使用 Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/java-api/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Java API
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/spring-boot-starter/" title="使用 Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/spring-boot-starter/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring Boot Starter
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/spring-namespace/" title="使用 Spring 命名空间" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/spring-namespace/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring 命名空间
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/atomikos/" title="Atomikos 事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/atomikos/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Atomikos 事务
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/narayana/" title="Narayana 事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/narayana/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Narayana 事务
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/bitronix/" title="Bitronix 事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/bitronix/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Bitronix 事务
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/transaction/seata/" title="Seata 事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/transaction/seata/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Seata 事务
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/governance/" title="分布式治理" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/governance/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
分布式治理
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/governance/java-api/" title="使用 Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/governance/java-api/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Java API
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/governance/yaml/" title="使用 YAML 配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/governance/yaml/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 YAML 配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/governance/spring-boot-starter/" title="使用 Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/governance/spring-boot-starter/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring Boot Starter
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/usage/governance/spring-namespace/" title="使用 Spring 命名空间" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/usage/governance/spring-namespace/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
使用 Spring 命名空间
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/" title="配置手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.1.2. </b>配置手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/" title="Java API" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
Java API
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/sharding/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/readwrite-splitting/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/readwrite-splitting/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/encrypt/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/encrypt/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/shadow/" title="影子库" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/shadow/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
影子库
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式治理
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/mix/" title="混合规则" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/mix/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
混合规则
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/java-api/change-history/" title="变更历史" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/java-api/change-history/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
变更历史
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/" title="YAML 配置" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
YAML 配置
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/sharding/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/readwrite-splitting-/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/readwrite-splitting-/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/encrypt/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/encrypt/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/shadow/" title="影子库" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/shadow/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
影子库
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式治理
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/yaml/mix/" title="混合规则" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/mix/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
混合规则
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/" title="Spring Boot Starter 配置" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
Spring Boot Starter 配置
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/sharding/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/readwrite-splitting/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/readwrite-splitting/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/encrypt/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/encrypt/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/shadow/" title="影子库" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/shadow/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
影子库
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式治理
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/mix/" title="混合规则" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/mix/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
混合规则
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/change-history/" title="变更历史" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/change-history/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
变更历史
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/" title="Spring 命名空间配置" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
Spring 命名空间配置
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/sharding/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据分片
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/readwrite-splitting/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/readwrite-splitting/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
读写分离
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/encrypt/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/encrypt/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据加密
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/shadow/" title="影子库" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/shadow/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
影子库
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式治理
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/mix/" title="混合规则" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/mix/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
混合规则
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/change-history/" title="变更历史" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/change-history/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
变更历史
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/" title="内置算法" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
内置算法
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding/" title="分片算法" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分片算法
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen/" title="分布式序列算法" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式序列算法
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance/" title="负载均衡算法" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
负载均衡算法
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/encrypt/" title="加密算法" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/encrypt/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
加密算法
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/configuration/props/" title="属性配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/props/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
属性配置
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-jdbc/unsupported-items/" title="不支持项" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/unsupported-items/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>4.1.3. </b>不支持项
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/" title="ShardingSphere-Proxy" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.2. </b>ShardingSphere-Proxy
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/usage/" title="使用手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/usage/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.2.1. </b>使用手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/usage/startup/" title="Proxy 启动" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/usage/startup/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
Proxy 启动
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/usage/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/usage/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式治理
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/usage/transaction/" title="分布式事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/usage/transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
分布式事务
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/configuration/" title="配置手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/configuration/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.2.2. </b>配置手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/configuration/data-source/" title="数据源配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/configuration/data-source/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
数据源配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/configuration/authentication/" title="权限配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/configuration/authentication/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
权限配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/configuration/props/" title="属性配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/configuration/props/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
属性配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/configuration/yaml-syntax/" title="YAML 语法说明" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/configuration/yaml-syntax/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
YAML 语法说明
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-proxy/docker/" title="Docker 镜像" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/docker/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>4.2.3. </b>Docker 镜像
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-sidecar/" title="ShardingSphere-Sidecar" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-sidecar/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
</i>
<b>4.3. </b>ShardingSphere-Sidecar
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-scaling/" title="ShardingSphere-Scaling" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-scaling/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.4. </b>ShardingSphere-Scaling
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-scaling/build/" title="运行部署" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-scaling/build/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>4.4.1. </b>运行部署
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-scaling/usage/" title="使用手册" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-scaling/usage/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>4.4.2. </b>使用手册
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/" title="ShardingSphere-UI" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.5. </b>ShardingSphere-UI
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/usage/" title="使用手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/usage/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>4.5.1. </b>使用手册
</a>
<ul>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/usage/build/" title="部署运行" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/usage/build/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
部署运行
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/usage/registry-center/" title="注册中心" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/usage/registry-center/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
注册中心
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/usage/rule-config/" title="规则配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/usage/rule-config/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
规则配置
</a>
</li>
<li data-nav-id="/cn/user-manual/shardingsphere-ui/usage/runtime-status/" title="运行状态" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-ui/usage/runtime-status/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
运行状态
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/cn/dev-manual/" title="开发者手册" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>5. </b>开发者手册
</a>
<ul>
<li data-nav-id="/cn/dev-manual/sql-parser/" title="SQL 解析" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/sql-parser/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.1. </b>SQL 解析
</a>
</li>
<li data-nav-id="/cn/dev-manual/configuration/" title="配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/configuration/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.2. </b>配置
</a>
</li>
<li data-nav-id="/cn/dev-manual/kernel/" title="内核" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/kernel/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.3. </b>内核
</a>
</li>
<li data-nav-id="/cn/dev-manual/sharding/" title="数据分片" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/sharding/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.4. </b>数据分片
</a>
</li>
<li data-nav-id="/cn/dev-manual/readwrite-splitting/" title="读写分离" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/readwrite-splitting/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.5. </b>读写分离
</a>
</li>
<li data-nav-id="/cn/dev-manual/data-encryption/" title="数据加密" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/data-encryption/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.6. </b>数据加密
</a>
</li>
<li data-nav-id="/cn/dev-manual/sql-audit/" title="SQL 审计" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/sql-audit/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.7. </b>SQL 审计
</a>
</li>
<li data-nav-id="/cn/dev-manual/transaction/" title="分布式事务" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/transaction/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.8. </b>分布式事务
</a>
</li>
<li data-nav-id="/cn/dev-manual/governance/" title="分布式治理" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/governance/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.9. </b>分布式治理
</a>
</li>
<li data-nav-id="/cn/dev-manual/scaling/" title="弹性伸缩" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/scaling/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.10. </b>弹性伸缩
</a>
</li>
<li data-nav-id="/cn/dev-manual/proxy/" title="Proxy" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/dev-manual/proxy/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
<b>5.11. </b>Proxy
</a>
</li>
</ul>
</li>
<li data-nav-id="/cn/downloads/" title="下载" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/downloads/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
</i>
<b>6. </b>下载
</a>
</li>
<li data-nav-id="/cn/others/" title="其他" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/others/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>7. </b>其他
</a>
<ul>
<li data-nav-id="/cn/others/faq/" title="FAQ" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/others/faq/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
</i>
<b>7.1. </b>FAQ
</a>
</li>
<li data-nav-id="/cn/others/api-change-history/" title="API 变更历史" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/others/api-change-history/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>7.2. </b>API 变更历史
</a>
<ul>
<li data-nav-id="/cn/others/api-change-history/shardingsphere-jdbc/" title="ShardingSphere-JDBC" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/cn/others/api-change-history/shardingsphere-jdbc/">
<i class="collapse" style="display:inline; font-family:'courier';">
<svg class="icon icon-down"
style="display: none;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path>
</svg>
<svg class="icon icon-right"
style="display: inline-block;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777">
<path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path>
</svg>
</i>
<b>7.2.1. </b>ShardingSphere-JDBC
</a>
<ul>
<li data-nav-id="/cn/others/api-change-history/shardingsphere-jdbc/yaml-configuration/" title="YAML 配置" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/cn/others/api-change-history/shardingsphere-jdbc/yaml-configuration/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
YAML 配置
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<section id="prefooter">
<hr/>
<ul>
<li>
<a class="padding">
<i class="fa fa-fw fa-language"></i>
<div class="select-style">
<select id="select-language" onchange="location = this.value;">
<option id="en" value="/document/current/en/features/sharding/principle/rewrite/">English</option>
<option id="cn" value="/document/current/cn/features/sharding/principle/rewrite/" selected>简体中文</option>
</select>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
<g>
<g id="arrow-drop-down">
<polygon points="0,63.75 127.5,191.25 255,63.75 " />
</g>
</g>
</svg>
</div>
</a>
</li>
</ul>
</section>
<hr />
<a class="padding" href="https://shardingsphere.apache.org/pdf/shardingsphere_docs_cn.pdf">
<i class="fa fa-fw fa-file-pdf-o" ></i>&nbsp;下载PDF文档&nbsp;&nbsp;
</a>
<section id="footer">
<p></p>
</section>
</div>
</nav>
<section id="body">
<div id="overlay"></div>
<div class="padding highlightable">
<div>
<div id="top-bar">
<div id="top-github-link">
<a class="github-link" title='Edit this page' href="https://github.com/apache/shardingsphere/tree/master/docs/document/content/features/sharding/principle/rewrite.cn.md" target="blank">
<i class="fa fa-code-fork"></i>
<span id="top-github-link-text">Edit this page</span>
</a>
</div>
<div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
<span id="sidebar-toggle-span">
<a href="#" id="sidebar-toggle" data-sidebar-toggle="">
<i class="fa fa-bars"></i>
</a>
</span>
<span id="toc-menu"><i class="fa fa-list-alt"></i></span>
<span class="links">
<a href='https://shardingsphere.apache.org/document/current/cn/'>ShardingSphere</a> > <a href='https://shardingsphere.apache.org/document/current/cn/features/'>概念 & 功能</a> > <a href='https://shardingsphere.apache.org/document/current/cn/features/sharding/'>数据分片</a> > <a href='https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/'>内核剖析</a> > 改写引擎
</span>
</div>
</div>
</div>
<div id="body-inner">
<h1>改写引擎</h1>
<nav id="TableOfContents">
<ul>
<li><a href="#正确性改写">正确性改写</a>
<ul>
<li><a href="#标识符改写">标识符改写</a></li>
<li><a href="#补列">补列</a></li>
<li><a href="#分页修正">分页修正</a></li>
<li><a href="#批量拆分">批量拆分</a></li>
</ul>
</li>
<li><a href="#优化改写">优化改写</a>
<ul>
<li><a href="#单节点优化">单节点优化</a></li>
<li><a href="#流式归并优化">流式归并优化</a></li>
</ul>
</li>
</ul>
</nav>
<p>工程师面向逻辑库与逻辑表书写的 SQL,并不能够直接在真实的数据库中执行,SQL 改写用于将逻辑 SQL 改写为在真实数据库中可以正确执行的 SQL。
它包括正确性改写和优化改写两部分。</p>
<h2 id="正确性改写">正确性改写</h2>
<p>在包含分表的场景中,需要将分表配置中的逻辑表名称改写为路由之后所获取的真实表名称。仅分库则不需要表名称的改写。除此之外,还包括补列和分页信息修正等内容。</p>
<h3 id="标识符改写">标识符改写</h3>
<p>需要改写的标识符包括表名称、索引名称以及 Schema 名称。</p>
<p>表名称改写是指将找到逻辑表在原始 SQL 中的位置,并将其改写为真实表的过程。表名称改写是一个典型的需要对 SQL 进行解析的场景。
从一个最简单的例子开始,若逻辑 SQL 为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
</code></pre></div><p>假设该 SQL 配置分片键 order_id,并且 order_id=1 的情况,将路由至分片表 1。那么改写之后的 SQL 应该为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
</code></pre></div><p>在这种最简单的 SQL 场景中,是否将 SQL 解析为抽象语法树似乎无关紧要,只要通过字符串查找和替换就可以达到 SQL 改写的效果。
但是下面的场景,就无法仅仅通过字符串的查找替换来正确的改写 SQL 了:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>正确改写的 SQL 应该是:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>而非:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order_1 xxx&#39;</span>;
</code></pre></div><p>由于表名之外可能含有表名称的类似字符,因此不能通过简单的字符串替换的方式去改写 SQL。</p>
<p>下面再来看一个更加复杂的 SQL 改写场景:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> t_order.order_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> t_order.order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>上面的 SQL 将表名作为字段的标识符,因此在 SQL 改写时需要一并修改:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> t_order_1.order_id <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> t_order_1.order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>而如果 SQL 中定义了表的别名,则无需连同别名一起修改,即使别名与表名相同亦是如此。例如:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> t_order.order_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">AS</span> t_order <span style="color:#66d9ef">WHERE</span> t_order.order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>SQL 改写则仅需要改写表名称就可以了:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> t_order.order_id <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">AS</span> t_order <span style="color:#66d9ef">WHERE</span> t_order.order_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">AND</span> remarks<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; t_order xxx&#39;</span>;
</code></pre></div><p>索引名称是另一个有可能改写的标识符。
在某些数据库中(如 MySQL、SQLServer),索引是以表为维度创建的,在不同的表中的索引是可以重名的;
而在另外的一些数据库中(如 PostgreSQL、Oracle),索引是以数据库为维度创建的,即使是作用在不同表上的索引,它们也要求其名称的唯一性。</p>
<p>在 ShardingSphere 中,管理 Schema 的方式与管理表如出一辙,它采用逻辑 Schema 去管理一组数据源。
因此,ShardingSphere 需要将用户在 SQL 中书写的逻辑 Schema 替换为真实的数据库 Schema。</p>
<p>ShardingSphere 目前还不支持在 DQL 和 DML 语句中使用 Schema。
它目前仅支持在数据库管理语句中使用 Schema,例如:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SHOW</span> COLUMNS <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">FROM</span> order_ds;
</code></pre></div><p>Schema 的改写指的是将逻辑 Schema 采用单播路由的方式,改写为随机查找到的一个正确的真实 Schema。</p>
<h3 id="补列">补列</h3>
<p>需要在查询语句中补列通常由两种情况导致。
第一种情况是 ShardingSphere 需要在结果归并时获取相应数据,但该数据并未能通过查询的 SQL 返回。
这种情况主要是针对 GROUP BY 和 ORDER BY。结果归并时,需要根据 <code>GROUP BY</code><code>ORDER BY</code> 的字段项进行分组和排序,但如果原始 SQL 的选择项中若并未包含分组项或排序项,则需要对原始 SQL 进行改写。
先看一下原始 SQL 中带有结果归并所需信息的场景:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id, user_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> user_id;
</code></pre></div><p>由于使用 user_id 进行排序,在结果归并中需要能够获取到 user_id 的数据,而上面的 SQL 是能够获取到 user_id 数据的,因此无需补列。</p>
<p>如果选择项中不包含结果归并时所需的列,则需要进行补列,如以下 SQL:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> user_id;
</code></pre></div><p>由于原始 SQL 中并不包含需要在结果归并中需要获取的 user_id,因此需要对 SQL 进行补列改写。补列之后的 SQL 是:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> order_id, user_id <span style="color:#66d9ef">AS</span> ORDER_BY_DERIVED_0 <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> user_id;
</code></pre></div><p>值得一提的是,补列只会补充缺失的列,不会全部补充,而且,在 SELECT 语句中包含 * 的 SQL,也会根据表的元数据信息选择性补列。下面是一个较为复杂的 SQL 补列场景:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> o.<span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order o, t_order_item i <span style="color:#66d9ef">WHERE</span> o.order_id<span style="color:#f92672">=</span>i.order_id <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> user_id, order_item_id;
</code></pre></div><p>我们假设只有 t_order_item 表中包含 order_item_id 列,那么根据表的元数据信息可知,在结果归并时,排序项中的 user_id 是存在于 t_order 表中的,无需补列;order_item_id 并不在 t_order 中,因此需要补列。
补列之后的 SQL 是:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> o.<span style="color:#f92672">*</span>, order_item_id <span style="color:#66d9ef">AS</span> ORDER_BY_DERIVED_0 <span style="color:#66d9ef">FROM</span> t_order o, t_order_item i <span style="color:#66d9ef">WHERE</span> o.order_id<span style="color:#f92672">=</span>i.order_id <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> user_id, order_item_id;
</code></pre></div><p>补列的另一种情况是使用 AVG 聚合函数。在分布式的场景中,使用 avg1 + avg2 + avg3 / 3 计算平均值并不正确,需要改写为 (sum1 + sum2 + sum3) / (count1 + count2 + count3)。
这就需要将包含 AVG 的 SQL 改写为 SUM 和 COUNT,并在结果归并时重新计算平均值。例如以下 SQL:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> <span style="color:#66d9ef">AVG</span>(price) <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> user_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
</code></pre></div><p>需要改写为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> <span style="color:#66d9ef">COUNT</span>(price) <span style="color:#66d9ef">AS</span> AVG_DERIVED_COUNT_0, <span style="color:#66d9ef">SUM</span>(price) <span style="color:#66d9ef">AS</span> AVG_DERIVED_SUM_0 <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> user_id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
</code></pre></div><p>然后才能够通过结果归并正确的计算平均值。</p>
<p>最后一种补列是在执行 INSERT 的 SQL 语句时,如果使用数据库自增主键,是无需写入主键字段的。
但数据库的自增主键是无法满足分布式场景下的主键唯一的,因此 ShardingSphere 提供了分布式自增主键的生成策略,并且可以通过补列,让使用方无需改动现有代码,即可将分布式自增主键透明的替换数据库现有的自增主键。
分布式自增主键的生成策略将在下文中详述,这里只阐述与 SQL 改写相关的内容。
举例说明,假设表 t_order 的主键是 order_id,原始的 SQL 为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order (<span style="color:#f92672">`</span>field1<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>field2<span style="color:#f92672">`</span>) <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">1</span>);
</code></pre></div><p>可以看到,上述 SQL 中并未包含自增主键,是需要数据库自行填充的。ShardingSphere 配置自增主键后,SQL 将改写为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order (<span style="color:#f92672">`</span>field1<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>field2<span style="color:#f92672">`</span>, order_id) <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">1</span>, xxxxx);
</code></pre></div><p>改写后的 SQL 将在 INSERT FIELD 和 INSERT VALUE 的最后部分增加主键列名称以及自动生成的自增主键值。上述 SQL 中的 <code>xxxxx</code> 表示自动生成的自增主键值。</p>
<p>如果 INSERT 的 SQL 中并未包含表的列名称,ShardingSphere 也可以根据判断参数个数以及表元信息中的列数量对比,并自动生成自增主键。例如,原始的 SQL 为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">1</span>);
</code></pre></div><p>改写的 SQL 将只在主键所在的列顺序处增加自增主键即可:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order <span style="color:#66d9ef">VALUES</span> (xxxxx, <span style="color:#ae81ff">10</span>, <span style="color:#ae81ff">1</span>);
</code></pre></div><p>自增主键补列时,如果使用占位符的方式书写 SQL,则只需要改写参数列表即可,无需改写 SQL 本身。</p>
<h3 id="分页修正">分页修正</h3>
<p>从多个数据库获取分页数据与单数据库的场景是不同的。
假设每 10 条数据为一页,取第 2 页数据。在分片环境下获取 LIMIT 10, 10,归并之后再根据排序条件取出前 10 条数据是不正确的。
举例说明,若 SQL 为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> score <span style="color:#66d9ef">FROM</span> t_score <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> score <span style="color:#66d9ef">DESC</span> <span style="color:#66d9ef">LIMIT</span> <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>;
</code></pre></div><p>下图展示了不进行 SQL 的改写的分页执行结果。</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/pagination_without_rewrite.png" alt="不改写SQL的分页执行结果"></p>
<p>通过图中所示,想要取得两个表中共同的按照分数排序的第 2 条和第 3 条数据,应该是 <code>95</code><code>90</code>
由于执行的 SQL 只能从每个表中获取第 2 条和第 3 条数据,即从 t_score_0 表中获取的是 <code>90</code><code>80</code>;从 t_score_1 表中获取的是 <code>85</code><code>75</code>
因此进行结果归并时,只能从获取的 <code>90</code><code>80</code><code>85</code><code>75</code> 之中进行归并,那么结果归并无论怎么实现,都不可能获得正确的结果。</p>
<p>正确的做法是将分页条件改写为 <code>LIMIT 0, 3</code>,取出所有前两页数据,再结合排序条件计算出正确的数据。
下图展示了进行 SQL 改写之后的分页执行结果。</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/pagination_with_rewrite.png" alt="改写SQL的分页执行结果"></p>
<p>越获取偏移量位置靠后数据,使用 LIMIT 分页方式的效率就越低。
有很多方法可以避免使用 LIMIT 进行分页。比如构建行记录数量与行偏移量的二级索引,或使用上次分页数据结尾 ID 作为下次查询条件的分页方式等。</p>
<p>分页信息修正时,如果使用占位符的方式书写 SQL,则只需要改写参数列表即可,无需改写 SQL 本身。</p>
<h3 id="批量拆分">批量拆分</h3>
<p>在使用批量插入的 SQL 时,如果插入的数据是跨分片的,那么需要对 SQL 进行改写来防止将多余的数据写入到数据库中。
插入操作与查询操作的不同之处在于,查询语句中即使用了不存在于当前分片的分片键,也不会对数据产生影响;而插入操作则必须将多余的分片键删除。
举例说明,如下 SQL:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order (order_id, xxx) <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">1</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>), (<span style="color:#ae81ff">2</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>), (<span style="color:#ae81ff">3</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>);
</code></pre></div><p>假设数据库仍然是按照 order_id 的奇偶值分为两片的,仅将这条 SQL 中的表名进行修改,然后发送至数据库完成 SQL 的执行 ,则两个分片都会写入相同的记录。
虽然只有符合分片查询条件的数据才能够被查询语句取出,但存在冗余数据的实现方案并不合理。因此需要将 SQL 改写为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order_0 (order_id, xxx) <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">2</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>);
<span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> t_order_1 (order_id, xxx) <span style="color:#66d9ef">VALUES</span> (<span style="color:#ae81ff">1</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>), (<span style="color:#ae81ff">3</span>, <span style="color:#e6db74">&#39;xxx&#39;</span>);
</code></pre></div><p>使用 IN 的查询与批量插入的情况相似,不过 IN 操作并不会导致数据查询结果错误。通过对 IN 查询的改写,可以进一步的提升查询性能。如以下 SQL:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order <span style="color:#66d9ef">WHERE</span> order_id <span style="color:#66d9ef">IN</span> (<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">3</span>);
</code></pre></div><p>改写为:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order_0 <span style="color:#66d9ef">WHERE</span> order_id <span style="color:#66d9ef">IN</span> (<span style="color:#ae81ff">2</span>);
<span style="color:#66d9ef">SELECT</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> order_id <span style="color:#66d9ef">IN</span> (<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">3</span>);
</code></pre></div><p>可以进一步的提升查询性能。ShardingSphere 暂时还未实现此改写策略,目前的改写结果是:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sql" data-lang="sql"><span style="color:#66d9ef">SELECT</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order_0 <span style="color:#66d9ef">WHERE</span> order_id <span style="color:#66d9ef">IN</span> (<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">3</span>);
<span style="color:#66d9ef">SELECT</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">FROM</span> t_order_1 <span style="color:#66d9ef">WHERE</span> order_id <span style="color:#66d9ef">IN</span> (<span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">3</span>);
</code></pre></div><p>虽然 SQL 的执行结果是正确的,但并未达到最优的查询效率。</p>
<h2 id="优化改写">优化改写</h2>
<p>优化改写的目的是在不影响查询正确性的情况下,对性能进行提升的有效手段。它分为单节点优化和流式归并优化。</p>
<h3 id="单节点优化">单节点优化</h3>
<p>路由至单节点的 SQL,则无需优化改写。
当获得一次查询的路由结果后,如果是路由至唯一的数据节点,则无需涉及到结果归并。因此补列和分页信息等改写都没有必要进行。
尤其是分页信息的改写,无需将数据从第 1 条开始取,大量的降低了对数据库的压力,并且节省了网络带宽的无谓消耗。</p>
<h3 id="流式归并优化">流式归并优化</h3>
<p>它仅为包含 <code>GROUP BY</code> 的 SQL 增加 <code>ORDER BY</code> 以及和分组项相同的排序项和排序顺序,用于将内存归并转化为流式归并。
在结果归并的部分中,将对流式归并和内存归并进行详细说明。</p>
<p>改写引擎的整体结构划分如下图所示。</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/rewrite_architecture_cn.png" alt="改写引擎结构"></p>
<footer class=" footline" >
</footer>
</div>
</div>
<div id="navigation">
<a class="nav nav-prev" href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/route/" title="路由引擎"> <i class="fa fa-chevron-left"></i></a>
<a class="nav nav-next" href="https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/execute/" title="执行引擎" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
</div>
</section>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="https://shardingsphere.apache.org/document/current/js/clipboard.min.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/perfect-scrollbar.min.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/perfect-scrollbar.jquery.min.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/jquery.sticky.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/featherlight.min.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/html5shiv-printshiv.min.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/highlight.pack.js?1628048582"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="https://shardingsphere.apache.org/document/current/js/modernizr.custom.71422.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/learn.js?1628048582"></script>
<script src="https://shardingsphere.apache.org/document/current/js/hugo-learn.js?1628048582"></script>
</body>
</html>