blob: 7b4b414827ea346fb1c889558433ed2f02dbd18c [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" 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-04-06 18:15:00">
<link rel="shortcut icon" href="https://shardingsphere.apache.org/document/current/img/favicon.png" type="image/x-icon" />
<title>Rewrite Engine :: ShardingSphere</title>
<link href="https://shardingsphere.apache.org/document/current/css/nucleus.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/font-awesome.min.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/hybrid.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/featherlight.min.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/perfect-scrollbar.min.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/auto-complete.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/theme.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/hugo-theme.css?1617704100" rel="stylesheet">
<link href="https://shardingsphere.apache.org/document/current/css/theme-black.css?1617704100" rel="stylesheet">
<script src="https://shardingsphere.apache.org/document/current/js/jquery-2.x.min.js?1617704100"></script>
<style type="text/css">
:root #header + #content > #left > #rlblock_left{
display:none !important;
}
</style>
</head>
<body class="" data-url="/en/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="/en/overview/" title="Overview" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Overview
</a>
</li>
<li data-nav-id="/en/quick-start/" title="Quick Start" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Quick Start
</a>
<ul>
<li data-nav-id="/en/quick-start/shardingsphere-jdbc-quick-start/" title="ShardingSphere-JDBC" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/quick-start/shardingsphere-proxy-quick-start/" title="ShardingSphere-Proxy" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/quick-start/shardingsphere-scaling-quick-start/" title="ShardingSphere-Scaling(Alpha)" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/features/" title="Concepts &amp; Features" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Concepts &amp; Features
</a>
<ul>
<li data-nav-id="/en/features/sharding/" title="Sharding" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Sharding
</a>
<ul>
<li data-nav-id="/en/features/sharding/concept/" title="Core Concept" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Core Concept
</a>
<ul>
<li data-nav-id="/en/features/sharding/concept/sql/" title="SQL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/features/sharding/concept/sharding/" title="Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding
</a>
</li>
<li data-nav-id="/en/features/sharding/concept/configuration/" title="Configuration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Configuration
</a>
</li>
<li data-nav-id="/en/features/sharding/concept/inline-expression/" title="Inline Expression" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Inline Expression
</a>
</li>
<li data-nav-id="/en/features/sharding/concept/key-generator/" title="Distributed Primary Key" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Distributed Primary Key
</a>
</li>
<li data-nav-id="/en/features/sharding/concept/hint/" title="Hint Sharding Route" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Hint Sharding Route
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/sharding/principle/" title="Guide to Kernel" class="dd-item
parent
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Guide to Kernel
</a>
<ul>
<li data-nav-id="/en/features/sharding/principle/parse/" title="Parse Engine" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Parse Engine
</a>
</li>
<li data-nav-id="/en/features/sharding/principle/route/" title="Route Engine" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Route Engine
</a>
</li>
<li data-nav-id="/en/features/sharding/principle/rewrite/" title="Rewrite Engine" class="dd-item active">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Rewrite Engine
</a>
</li>
<li data-nav-id="/en/features/sharding/principle/execute/" title="Execute Engine" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Execute Engine
</a>
</li>
<li data-nav-id="/en/features/sharding/principle/merge/" title="Merger Engine" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Merger Engine
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/sharding/use-norms/" title="Use Norms" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Use Norms
</a>
<ul>
<li data-nav-id="/en/features/sharding/use-norms/sql/" title="SQL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/features/sharding/use-norms/pagination/" title="Pagination" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Pagination
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/features/transaction/" title="Distributed Transaction" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Distributed Transaction
</a>
<ul>
<li data-nav-id="/en/features/transaction/concept/" title="Core Concept" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Core Concept
</a>
<ul>
<li data-nav-id="/en/features/transaction/concept/2pc-xa-transaction/" title="XA Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
<li data-nav-id="/en/features/transaction/concept/base-transaction-seata/" title="Seata BASE transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 BASE transaction
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/transaction/principle/" title="Principle" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Principle
</a>
<ul>
<li data-nav-id="/en/features/transaction/principle/2pc-xa-transaction/" title="XA Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
<li data-nav-id="/en/features/transaction/principle/base-transaction-seata/" title="Seata BASE transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 BASE transaction
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/transaction/use-norms/" title="Use Norms" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Use Norms
</a>
<ul>
<li data-nav-id="/en/features/transaction/use-norms/local-transaction/" title="Local Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Local Transaction
</a>
</li>
<li data-nav-id="/en/features/transaction/use-norms/2pc-xa-transaction/" title="XA transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 transaction
</a>
</li>
<li data-nav-id="/en/features/transaction/use-norms/base-transaction-seata/" title="Seata BASE transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 BASE transaction
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/features/read-write-splitting/" title="Replica query" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/features/read-write-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>Replica query
</a>
<ul>
<li data-nav-id="/en/features/read-write-splitting/concept/" title="Core Concept" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/read-write-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>Core Concept
</a>
</li>
<li data-nav-id="/en/features/read-write-splitting/use-norms/" title="Use Norms" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/read-write-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>Use Norms
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/governance/" title="Governance" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Governance
</a>
<ul>
<li data-nav-id="/en/features/governance/management/" title="Management" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Management
</a>
<ul>
<li data-nav-id="/en/features/governance/management/config-center/" title="Config Center" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/governance/management/config-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>
Config Center
</a>
</li>
<li data-nav-id="/en/features/governance/management/registry-center/" title="Registry Center" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Registry Center
</a>
</li>
<li data-nav-id="/en/features/governance/management/dependency/" title="Third-party Components" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Third-party Components
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/governance/observability/" title="Observability" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Observability
</a>
<ul>
<li data-nav-id="/en/features/governance/observability/apm-integration/" title="APM Integration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
APM Integration
</a>
</li>
<li data-nav-id="/en/features/governance/observability/agnet/" title="Agent Integration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/governance/observability/agnet/">
<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 Integration
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/features/scaling/" title="Scaling" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Scaling
</a>
<ul>
<li data-nav-id="/en/features/scaling/concept/" title="Core Concept" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Core Concept
</a>
</li>
<li data-nav-id="/en/features/scaling/principle/" title="Principle" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Principle
</a>
</li>
<li data-nav-id="/en/features/scaling/use-norms/" title="User Norms" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>User Norms
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/encrypt/" title="Encryption" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Encryption
</a>
<ul>
<li data-nav-id="/en/features/encrypt/concept/" title="Core Concept" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Core Concept
</a>
</li>
<li data-nav-id="/en/features/encrypt/principle/" title="Principle" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Principle
</a>
</li>
<li data-nav-id="/en/features/encrypt/use-norms/" title="Use Norms" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Use Norms
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/shadow/" title="Shadow DB" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Shadow DB
</a>
<ul>
<li data-nav-id="/en/features/shadow/concept/" title="Core Concept" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Core Concept
</a>
</li>
<li data-nav-id="/en/features/shadow/principle/" title="Principle" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Principle
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/features/dist-sql/" title="Dist SQL" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/features/dist-sql/rdl/" title="RDL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/dist-sql/rdl/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
RDL
</a>
</li>
<li data-nav-id="/en/features/dist-sql/rql/" title="RQL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/dist-sql/rql/">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg>
RQL
</a>
</li>
<li data-nav-id="/en/features/dist-sql/sctl/" title="SCTL" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/features/dist-sql/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>
<li data-nav-id="/en/features/pluggable-architecture/" title="Pluggable Architecture" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Pluggable Architecture
</a>
</li>
<li data-nav-id="/en/features/test-engine/" title="Test Engine" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Test Engine
</a>
<ul>
<li data-nav-id="/en/features/test-engine/integration-test/" title="Integration Test" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Integration Test
</a>
</li>
<li data-nav-id="/en/features/test-engine/parser-test/" title="SQL Parser Test" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Parser Test
</a>
</li>
<li data-nav-id="/en/features/test-engine/rewrite-test/" title="SQL Rewrite Test" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Rewrite Test
</a>
</li>
<li data-nav-id="/en/features/test-engine/performance-test/" title="Performance Test" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Performance Test
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/" title="User Manual" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>User Manual
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/" title="ShardingSphere-JDBC" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-jdbc/usage/" title="Usage" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Usage
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/" title="Data Sharding" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Data Sharding
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/java-api/" title="Use Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Java API
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/yaml/" title="Use YAML" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use YAML
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/spring-boot-starter/" title="Use Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Boot Starter
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/spring-namespace/" title="Use Spring Namespace" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Namespace
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/sharding/hint/" title="Hint" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Hint
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/" title="Transaction" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Transaction
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/java-api/" title="Use Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Java API
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/spring-boot-starter/" title="Use Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Boot Starter
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/spring-namespace/" title="Use Spring Namespace" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Namespace
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/atomikos/" title="Atomikos Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/bitronix/" title="Bitronix Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/narayana/" title="Narayana Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/transaction/seata/" title="Seata Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Transaction
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/governance/" title="Governance" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/governance/java-api/" title="Use Java API" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Java API
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/governance/yaml/" title="Use YAML" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use YAML
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/governance/spring-boot-starter/" title="Use Spring Boot Starter" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Boot Starter
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/usage/governance/spring-namespace/" title="Use Spring Namespace" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Use Spring Namespace
</a>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/" title="Configuration Manual" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Configuration Manual
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/" title="Java API" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-jdbc/configuration/java-api/sharding/" title="Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/read-write-splitting/" title="Read write splitting" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/java-api/read-write-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>
Read write splitting
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/encrypt/" title="Encryption" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Encryption
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/shadow/" title="Shadow DB" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Shadow DB
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/governance/" title="Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/mix/" title="Mixed Rules" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Mixed Rules
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/java-api/change-history/" title="Change History" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Change History
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/" title="YAML Configuration" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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 Configuration
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/sharding/" title="Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/read-write-splitting/" title="Read write splitting" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/yaml/read-write-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>
Read write splitting
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/encrypt/" title="Encryption" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Encryption
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/shadow/" title="Shadow DB" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Shadow DB
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/governance/" title="Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/mix/" title="Mixed Rules" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Mixed Rules
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/yaml/change-history/" title="Change History" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/yaml/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>
Change History
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/" title="Spring Boot Starter Configuration" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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 Configuration
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/sharding/" title="Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/read-write-splitting/" title="Read write splitting" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/read-write-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>
Read write splitting
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/encrypt/" title="Encryption" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Encryption
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/shadow/" title="Shadow DB" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Shadow DB
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/governance/" title="Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/mix/" title="Mixed Rules" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Mixed Rules
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/change-history/" title="Change History" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Change History
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/" title="Spring Namespace Configuration" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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 Namespace Configuration
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/sharding/" title="Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/read-write-splitting/" title="Read write splitting" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/read-write-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>
Read write splitting
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/encrypt/" title="Encryption" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Encryption
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/shadow/" title="Shadow DB" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Shadow DB
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/governance/" title="Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/mix/" title="Mixed Rules" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Mixed Rules
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/spring-namespace/change-history/" title="Change History" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Change History
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/" title="Built-in Algorithm" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Built-in Algorithm
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding/" title="Sharding Algorithm" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Sharding Algorithm
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/keygen/" title="Key Generate Algorithm" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Key Generate Algorithm
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance/" title="Load Balance Algorithm" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Load Balance Algorithm
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/encrypt/" title="Encryption Algorithm" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Encryption Algorithm
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/configuration/props/" title="Properties Configuration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Properties Configuration
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-jdbc/unsupported-items/" title="Unsupported Items" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Unsupported Items
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/" title="ShardingSphere-Proxy" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-proxy/usage/" title="Usage" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Usage
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/usage/startup/" title="Proxy Startup" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Startup
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/usage/governance/" title="Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Governance
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/usage/transaction/" title="Distributed Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Distributed Transaction
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/configuration/" title="Configuration Manual" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Configuration Manual
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/configuration/data-source/" title="Data Source Configuration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Data Source Configuration
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/configuration/authentication/" title="Authentication" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Authentication
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/configuration/props/" title="Properties Configuration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Properties Configuration
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/configuration/yaml-syntax/" title="YAML Syntax" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Syntax
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-proxy/docker/" title="Docker Clone" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Clone
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-sidecar/" title="ShardingSphere-Sidecar" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-scaling/" title="ShardingSphere-Scaling" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-scaling/build/" title="Build" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Build
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-scaling/usage/" title="Manual" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Manual
</a>
</li>
</ul>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-ui/" title="ShardingSphere-UI" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/user-manual/shardingsphere-ui/usage/" title="Manual" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Manual
</a>
<ul>
<li data-nav-id="/en/user-manual/shardingsphere-ui/usage/build/" title="Build" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Build
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-ui/usage/registry-center/" title="Registry Center" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Registry Center
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-ui/usage/rule-config/" title="Rule Config" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Rule Config
</a>
</li>
<li data-nav-id="/en/user-manual/shardingsphere-ui/usage/runtime-status/" title="Runtime Status" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>
Runtime Status
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li data-nav-id="/en/dev-manual/" title="Dev Manual" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Dev Manual
</a>
<ul>
<li data-nav-id="/en/dev-manual/sql-parser/" title="SQL Parser" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Parser
</a>
</li>
<li data-nav-id="/en/dev-manual/configuration/" title="Configuration" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Configuration
</a>
</li>
<li data-nav-id="/en/dev-manual/kernel/" title="Kernel" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Kernel
</a>
</li>
<li data-nav-id="/en/dev-manual/sharding/" title="Data Sharding" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Data Sharding
</a>
</li>
<li data-nav-id="/en/dev-manual/read-write-splitting/" title="Read write splitting" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/dev-manual/read-write-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>Read write splitting
</a>
</li>
<li data-nav-id="/en/dev-manual/data-encryption/" title="Data Encryption" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Data Encryption
</a>
</li>
<li data-nav-id="/en/dev-manual/sql-audit/" title="SQL Audit" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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 Audit
</a>
</li>
<li data-nav-id="/en/dev-manual/transaction/" title="Distributed Transaction" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Distributed Transaction
</a>
</li>
<li data-nav-id="/en/dev-manual/governance/" title="Distributed Governance" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Distributed Governance
</a>
</li>
<li data-nav-id="/en/dev-manual/scaling/" title="Scaling" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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>Scaling
</a>
</li>
<li data-nav-id="/en/dev-manual/proxy/" title="Proxy" class="dd-item ">
<a href="https://shardingsphere.apache.org/document/current/en/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="/en/downloads/" title="Downloads" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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>Downloads
</a>
</li>
<li data-nav-id="/en/faq/" title="FAQ" class="dd-item
">
<a href="https://shardingsphere.apache.org/document/current/en/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. </b>FAQ
</a>
</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/" selected>English</option>
<option id="cn" value="/document/current/cn/features/sharding/principle/rewrite/">简体中文</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_en.pdf">
<i class="fa fa-fw fa-file-pdf-o" ></i>&nbsp;Download 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.en.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/en/'>ShardingSphere</a> > <a href='https://shardingsphere.apache.org/document/current/en/features/'>Concepts & Features</a> > <a href='https://shardingsphere.apache.org/document/current/en/features/sharding/'>Sharding</a> > <a href='https://shardingsphere.apache.org/document/current/en/features/sharding/principle/'>Guide to Kernel</a> > Rewrite Engine
</span>
</div>
</div>
</div>
<div id="body-inner">
<h1>Rewrite Engine</h1>
<nav id="TableOfContents">
<ul>
<li><a href="#correctness-rewrite">Correctness Rewrite</a></li>
<li><a href="#identifier-rewrite">Identifier Rewrite</a></li>
<li><a href="#column-derivation">Column Derivation</a></li>
<li><a href="#pagination-revision">Pagination Revision</a></li>
<li><a href="#batch-split">Batch Split</a></li>
<li><a href="#optimization-rewrite">Optimization Rewrite</a>
<ul>
<li><a href="#single-node-optimization">Single Node Optimization</a></li>
<li><a href="#stream-merger-optimization">Stream Merger Optimization</a></li>
</ul>
</li>
</ul>
</nav>
<p>The SQL written by engineers facing logic databases and tables cannot be executed directly in actual databases. SQL rewrite is used to rewrite logic SQL into rightly executable ones in actual databases, including two parts, correctness rewrite and optimization rewrite.</p>
<h2 id="correctness-rewrite">Correctness Rewrite</h2>
<p>In situation with sharding tables, it requires to rewrite logic table names in sharding settings into actual table names acquired after routing. Database sharding does not require to rewrite table names. In addition to that, there are also column derivation, pagination information revision and other content.</p>
<h2 id="identifier-rewrite">Identifier Rewrite</h2>
<p>Identifiers that need to be rewritten include table name, index name and schema name. Table name rewrite refers to the process to locate the position of logic tables in the original SQL and rewrite it as the physical table. Table name rewrite is one typical situation that requires to parse SQL. From a most plain case, if the logic SQL is as follow:</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>If the SQL is configured with sharding key order_id=1, it will be routed to Sharding Table 1. Then, the SQL after rewrite should be:</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>In this most simple kind of SQL, whether parsing SQL to abstract syntax tree seems unimportant, SQL can be rewritten only by searching for and substituting characters. But in the following situation, it is unable to rewrite SQL rightly merely by searching for and substituting characters:</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>The SQL rightly rewritten is supposed to be:</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>Rather than:</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>Because there may be similar characters besides the table name, the simple character substitute method cannot be used to rewrite SQL. Here is another more complex SQL rewrite situation:</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>The SQL above takes table name as the identifier of the field, so it should also be revised when SQL is rewritten:</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>But if there is another table name defined in SQL, it is not necessary to revise that, even though that name is the same as the table name. For example:</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 rewrite only requires to revise its table name:</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>Index name is another identifier that can be rewritten. In some databases (such as MySQL/SQLServer), the index is created according to the table dimension, and its names in different tables can repeat. In some other databases (such as PostgreSQL/Oracle), however, the index is created according to the database dimension, index names in different tables are required to be one and the only.</p>
<p>In ShardingSphere, schema management method is similar to that of the table. It uses logic schema to manage a set of data sources, so it requires to replace the logic schema written by users in SQL with physical database schema.</p>
<p>ShardingSphere only supports to use schema in database management statements but not in DQL and DML statements, for example:</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 rewrite refers to rewriting logic schema as a right and real schema found arbitrarily with unicast route.</p>
<h2 id="column-derivation">Column Derivation</h2>
<p>Column derivation in query statements usually results from two situations. First, ShardingSphere needs to acquire the corresponding data when merging results, but it is not returned through the query SQL. This kind of situation aims mainly at GROUP BY and ORDER BY. Result merger requires sorting and ranking according to items of <code>GROUP BY</code> and <code>ORDER BY</code>field. But if sorting and ranking items are not included in the original SQL, it should be rewritten. Look at the situation where the original SQL has the information required by result merger:</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>Since user_id is used in ranking, the result merger needs the data able to acquire user_id. The SQL above is able to acquire user_id data, so there is no need to add columns.</p>
<p>If the selected item does not contain the column required by result merger, it will need to add column, as the following 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>Since the original SQL does not contain user_id needed by result merger, the SQL needs to be rewritten by adding columns, and after that, it will be:</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>What’s to be mentioned, column derivation will only add the missing column rather than all of them; the SQL that includes <code>*</code> in SELECT will also selectively add columns according to the meta-data information of tables. Here is a relatively complex SQL column derivation case:</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>Suppose only t_order_item table contains order_item_id column, according to the meta-data information of tables, the user_id in sorting item exists in table t_order as merging result, but order_item_id does not exist in t_order, so it needs to add columns. The SQL after that will be:</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>Another situation of column derivation is using AVG aggregation function. In distributed situations, it is not right to calculate the average value with avg1 + avg2 + avg3 / 3, and it should be rewritten as (sum1 + sum2 + sum3) / (count1 + count2 + count3). This requires to rewrite the SQL that contains AVG as SUM and COUNT and recalculate the average value in result merger. Such as the following 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>Should be rewritten as:</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>Then it can calculate the right average value through result merger.</p>
<p>The last kind of column derivation is in SQL with INSERT. With database auto-increment key, there is no need to fill in primary key field. But database auto-increment key cannot satisfy the requirement of only one primary key being in the distributed situation. So ShardingSphere provides a distributed auto-increment key generation strategy, enabling users to replace the current auto-increment key invisibly with a distributed one without changing existing codes through column derivation. Distributed auto-increment key generation strategy will be expounded in the following part, here we only explain the content related to SQL rewrite. For example, if the primary key of t_order is order_id, and the original SQL is:</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>It can be seen that the SQL above does not include an auto-increment key, which will be filled by the database itself. After ShardingSphere set an auto-increment key, the SQL will be rewritten as:</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>Rewritten SQL will add auto-increment key name and its value generated automatically in the last part of INSERT FIELD and INSERT VALUE. <code>xxxxx</code> in the SQL above stands for the latter one.</p>
<p>If INSERT SQL does not contain the column name of the table, ShardingSphere can also automatically generate auto-increment key by comparing the number of parameter and column in the table meta-information. For example, the original SQL is:</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>The rewritten SQL only needs to add an auto-increment key in the column where the primary key is:</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>When auto-increment key derives column, if the user writes SQL with placeholder, he only needs to rewrite parameter list but not SQL itself.</p>
<h2 id="pagination-revision">Pagination Revision</h2>
<p>The scenarios of acquiring pagination data from multiple databases is different from that of one single database. If every 10 pieces of data are taken as one page, the user wants to take the second page of data. It is not right to take, acquire LIMIT 10, 10 under sharding situations, and take out the first 10 pieces of data according to sorting conditions after merging. For example, if the SQL is:</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>The following picture shows the pagination execution results without SQL rewrite.</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/pagination_without_rewrite_en.png" alt="Pagination without rewrite"></p>
<p>As shown in the picture, if you want to acquire the second and the third piece of data ordered by score common in both tables, and they are supposed to be <code>95</code> and <code>90</code>.
Since the executed SQL can only acquire the second and the third piece of data from each table, i.e., <code>90</code> and <code>80</code> from t_score_0, <code>85</code> and <code>75</code> from t_score_1.
When merging results, it can only merge from <code>90</code>, <code>80</code>, <code>85</code> and <code>75</code> already acquired, so the right result cannot be acquired anyway.</p>
<p>The right way is to rewrite pagination conditions as <code>LIMIT 0, 3</code>, take out all the data from the first two pages and combine sorting conditions to calculate the right data.
The following picture shows the execution of pagination results after SQL rewrite.</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/pagination_with_rewrite_en.png" alt="Pagination with rewrite"></p>
<p>The latter the offset position is, the lower the efficiency of using LIMIT pagination will be.
There are many ways to avoid using LIMIT as pagination method, such as constructing a secondary index to record line record number and line offset amount,
or using the tail ID of last pagination data as the pagination method of conditions of the next query.</p>
<p>When revising pagination information, if the user uses placeholder method to write SQL, he only needs to rewrite parameter list rather than SQL itself.</p>
<h2 id="batch-split">Batch Split</h2>
<p>When using batch inserted SQL, if the inserted data crosses sharding, the user needs to rewrite SQL to avoid writing excessive data into the database. The differences between insert operation and query operation are: though the query sentence has used sharding keys that do not exist in current sharding, they will not have any influence on data, but insert operation has to delete extra sharding keys. Take the following SQL for example:</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>If the database is still divided into two parts according to odd and even number of order_id, this SQL will be executed after its table name is revised. Then, both shards will be written with the same record. Though only the data that satisfies sharding conditions can be taken out from query statement, it is not reasonable for the schema to have excessive data. So the SQL should be rewritten as:</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 query is similar to batch insertion, but IN operation will not lead to wrong data query result. Through rewriting IN query, the query performance can be further improved. Like the following 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>Is rewritten as:</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>The query performance will be further improved. For now, ShardingSphere has not realized this rewrite strategy, so the current rewrite result is:</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>Though the execution result of SQL is right, but it has not achieved the most optimized query efficiency.</p>
<h2 id="optimization-rewrite">Optimization Rewrite</h2>
<p>Its purpose is to effectively improve the performance without influencing the correctness of the query. It can be divided into single node optimization and stream merger optimization.</p>
<h3 id="single-node-optimization">Single Node Optimization</h3>
<p>It refers to the optimization that stops the SQL rewrite from the route to the single node. After acquiring one route result, if it is routed to a single data node, result merging is unnecessary to be involved, so there is no need for rewrites as derived column, pagination information and others. In particular, there is no need to read from the first piece of information, which reduces the pressure for the database to a large extent and saves meaningless consumption of the network bandwidth.</p>
<h3 id="stream-merger-optimization">Stream Merger Optimization</h3>
<p>It only adds sorting items and sorting orders identical with grouping items and <code>ORDER BY</code> to <code>GROUP BY</code> SQL, and they are used to transfer memory merger to stream merger. In the result merger part, stream merger and memory merger will be explained in detail.</p>
<p>The overall structure of rewrite engine is shown in the following picture.</p>
<p><img src="https://shardingsphere.apache.org/document/current/img/sharding/rewrite_architecture_en.png" alt="Rewrite Engine"></p>
<footer class=" footline" >
</footer>
</div>
</div>
<div id="navigation">
<a class="nav nav-prev" href="https://shardingsphere.apache.org/document/current/en/features/sharding/principle/route/" title="Route Engine"> <i class="fa fa-chevron-left"></i></a>
<a class="nav nav-next" href="https://shardingsphere.apache.org/document/current/en/features/sharding/principle/execute/" title="Execute Engine" 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?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/perfect-scrollbar.min.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/perfect-scrollbar.jquery.min.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/jquery.sticky.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/featherlight.min.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/html5shiv-printshiv.min.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/highlight.pack.js?1617704100"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="https://shardingsphere.apache.org/document/current/js/modernizr.custom.71422.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/learn.js?1617704100"></script>
<script src="https://shardingsphere.apache.org/document/current/js/hugo-learn.js?1617704100"></script>
</body>
</html>