OceanBase logo

OceanBase

A unified distributed database ready for your transactional, analytical, and AI workloads.

DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Resources

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS

OceanBase Cloud

OceanBase Database

Tools

Connectors and Middleware

QUICK START

OceanBase Cloud

OceanBase Database

BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Company

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

International - English
中国站 - 简体中文
日本 - 日本語
Sign In
Start on Cloud

A unified distributed database ready for your transactional, analytical, and AI workloads.

DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS
OceanBase CloudOceanBase Database
ToolsConnectors and Middleware
QUICK START
OceanBase CloudOceanBase Database
BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

Start on Cloud
编组
All Products
    • Databases
    • iconOceanBase Database
    • iconOceanBase Cloud
    • iconOceanBase Tugraph
    • iconInteractive Tutorials
    • iconOceanBase Best Practices
    • Tools
    • iconOceanBase Cloud Platform
    • iconOceanBase Migration Service
    • iconOceanBase Developer Center
    • iconOceanBase Migration Assessment
    • iconOceanBase Admin Tool
    • iconOceanBase Loader and Dumper
    • iconOceanBase Deployer
    • iconKubernetes operator for OceanBase
    • iconOceanBase Diagnostic Tool
    • iconOceanBase Binlog Service
    • Connectors and Middleware
    • iconOceanBase Database Proxy
    • iconEmbedded SQL in C for OceanBase
    • iconOceanBase Call Interface
    • iconOceanBase Connector/C
    • iconOceanBase Connector/J
    • iconOceanBase Connector/ODBC
    • iconOceanBase Connector/NET
icon

OceanBase Database Proxy

V4.2.2

  • What is ODP?
  • Installation and deployment
    • Deployment modes
    • Deploy ODP by using OCP
    • Overview
    • Deploy ODP by using the CLI
    • Use OBD to deploy ODP
  • Basic operations
  • Configuration parameter
    • Parameter summary
    • View and modify parameters
    • Parameters that take effect dynamically
      • check_tenant_locality_change
      • client_max_connections
      • client_sock_option_flag_out
      • client_tcp_keepcnt
      • client_tcp_keepidle
      • client_tcp_keepintvl
      • client_tcp_user_timeout
      • cluster_count_high_water_mark
      • cluster_expire_time
      • config_server_refresh_interval
      • congestion_fail_window
      • congestion_failure_threshold
      • congestion_retry_interval
      • current_local_config_version
      • default_buffer_water_mark
      • default_inactivity_timeout
      • digest_sql_length
      • enable_async_log
      • enable_async_pull_location_cache
      • enable_binlog_service
      • enable_causal_order_read
      • enable_client_ip_checkout
      • enable_cluster_checkout
      • enable_congestion
      • enable_connection_diagnosis
      • enable_extra_prometheus_metric
      • enable_full_username
      • enable_ob_protocol_v2
      • enable_pl_route
      • enable_primary_zone
      • enable_prometheus
      • enable_proxy_scramble
      • enable_qos
      • enable_reroute
      • enable_sequence_prefetch
      • enable_standby
      • enable_stat
      • enable_syslog_file_compress
      • enable_trace
      • enable_trace_stats
      • enable_trans_detail_stats
      • enable_transaction_internal_routing
      • enable_weak_reroute
      • fetch_proxy_bin_random_time
      • fetch_proxy_bin_timeout
      • flow_high_water_mark
      • hot_upgrade_exit_timeout
      • hot_upgrade_failure_retries
      • idc_list_refresh_interval
      • ignore_local_config
      • internal_cmd_mem_limited
      • log_cleanup_interval
      • long_async_task_timeout
      • max_syslog_file_time
      • metadb_server_state_refresh_interval
      • monitor_stat_dump_interval
      • monitor_stat_high_threshold
      • need_convert_vip_to_tname
      • net_config_poll_timeout
      • obproxy_read_only
      • obproxy_sys_password
      • enable_sharding
      • enable_standby
      • enable_stat
      • enable_strict_stat_time
      • enable_sync_all_stats
      • enable_syslog_file_compress
      • enable_trace
      • enable_trace_stats
      • enable_trans_detail_stats
      • enable_transaction_internal_routing
      • enable_transaction_split
      • enable_weak_reroute
      • enable_xa_route
      • fetch_proxy_bin_random_time
      • fetch_proxy_bin_timeout
      • flow_consumer_reenable_threshold
      • flow_event_queue_threshold
      • flow_high_water_mark
      • flow_low_water_mark
      • hot_upgrade_exit_timeout
      • hot_upgrade_failure_retries
      • hot_upgrade_rollback_timeout
      • idc_list_refresh_interval
      • ignore_local_config
      • internal_cmd_mem_limited
      • ldg_info_refresh_interval
      • log_cleanup_interval
      • log_dir_size_threshold
      • log_file_percentage
      • long_async_task_timeout
      • max_log_file_size
      • max_syslog_file_count
      • max_syslog_file_time
      • metadb_server_state_refresh_interval
      • min_congested_connect_timeout
      • min_keep_congestion_interval
      • monitor_cost_ms_unit
      • monitor_item_limit
      • monitor_item_max_idle_period
      • monitor_log_level
      • monitor_stat_dump_interval
      • monitor_stat_high_threshold
      • monitor_stat_low_threshold
      • monitor_stat_middle_threshold
      • mysql_version
      • need_convert_vip_to_tname
      • net_config_poll_timeout
      • normal_pl_update_threshold
      • ob_max_read_stale_time
      • obproxy_force_parallel_query_dop
      • obproxy_read_consistency
      • obproxy_read_only
      • obproxy_sys_password
      • observer_query_timeout_delta
      • observer_sys_password
      • observer_sys_password1
      • partition_location_expire_relative_time
      • prometheus_sync_interval
      • proxy_hot_upgrade_check_interval
      • proxy_idc_name
      • proxy_info_check_interval
      • proxy_local_cmd
      • proxy_mem_limited
      • proxy_primary_zone_name
      • proxy_route_policy
      • proxy_tenant_name
      • qa_mode_mock_public_cloud_slb_addr
      • qos_stat_clean_interval
      • qos_stat_item_limit
      • query_digest_time_threshold
      • read_stale_retry_interval
      • refresh_idc_list
      • refresh_json_config
      • refresh_rslist
      • request_buffer_length
      • route_diagnosis_level
      • routing_cache_mem_limited
      • sequence_entry_expire_time
      • sequence_fail_retry_count
      • sequence_prefetch_threshold
      • server_detect_fail_threshold
      • server_detect_mode
      • server_detect_refresh_interval
      • server_routing_mode
      • server_state_refresh_interval
      • server_tcp_init_cwnd
      • server_tcp_keepcnt
      • server_tcp_keepidle
      • server_tcp_keepintvl
      • server_tcp_user_timeout
      • short_async_task_timeout
      • skip_proxy_sys_private_check
      • skip_proxyro_check
      • slow_proxy_process_time_threshold
      • slow_query_time_threshold
      • slow_transaction_time_threshold
      • sock_option_flag_out
      • sock_packet_mark_out
      • sock_packet_tos_out
      • sock_recv_buffer_size_out
      • sock_send_buffer_size_out
      • sql_table_cache_expire_relative_time
      • sql_table_cache_mem_limited
      • sqlaudit_mem_limited
      • ssl_attributes
      • stat_dump_interval
      • stat_table_sync_interval
      • syslog_level
      • target_db_server
      • tenant_location_valid_time
      • tunnel_request_size_threshold
      • username_separator
      • xflush_log_level
    • Parameters that take effect after a restart
      • ip_listen_mode
      • enable_global_ps_cache
      • local_bound_ipv6_ip
      • rootservice_list
      • rootservice_cluster_name
      • obproxy_config_server_url
      • stack_size
      • block_thread_num
      • listen_port
      • enable_strict_kernel_release
      • shard_scan_thread_num
      • local_bound_ip
      • grpc_thread_num
      • prometheus_listen_port
      • enable_cpu_isolate
      • grpc_client_num
      • work_thread_num
      • enable_cpu_topology
      • prometheus_cost_ms_unit
      • net_accept_threads
      • task_thread_num
      • automatic_match_work_thread
  • Connection management
    • Principles
    • Connection diagnostics
    • Client session
    • Session status synchronization
    • Server session
  • Data routing
    • Factors affecting data routing
    • ODP routing
    • Follower latency threshold
    • Read/Write separation
    • Intra-tenant routing
      • IP address-based routing
      • Global index table-based routing for strong-consistency reads
      • Partitioned table-based routing for strong-consistency reads
      • Replication table-based routing for strong-consistency reads
      • Strategy-based routing
      • Distributed transaction routing
      • Primary zone-based routing for strong-consistency reads
      • Forcible routing
      • Overview
      • Rerouting
  • High availability mechanism
    • High availability testing
    • Overview
    • High availability of ODP services
    • High availability of OceanBase Database
  • Security and protocols
  • Operation and maintenance
    • Troubleshooting
      • Troubleshooting logic
      • Monitoring logs
    • Performance analysis
    • Show Trace
    • Routing diagnostics
      • Overview
      • Examples
      • Obtain diagnostic information
      • Diagnostic point troubleshooting
        • PARTITION_ENTRY_LOOKUP_DONE
        • PARTITION_ID_CALC_DONE
        • ROUTE_POLICY
        • HANDLE_RESPONSE
        • ROUTE_INFO
        • EXPR_PARSE
        • Overview
        • CONGESTION_CONTROL
        • RESOLVE_TOKEN
        • SQL_PARSE
        • FETCH_TABLE_RELATED_DATA
        • LOCATION_CACHE_LOOKUP
        • ROUTINE_ENTRY_LOOKUP_DONE
        • RESOLVE_EXPR
        • CALC_ROWID
        • CALC_PARTITION_ID
        • TABLE_ENTRY_LOOKUP_DONE
        • RETRY
  • Release Notes
    • Versioning rules
    • Enterprise Edition
      • V3.2
        • ODP V3.2.11
        • ODP Enterprise Edition V3.2.3.5
      • V4.0
        • ODP Enterprise Edition V4.0.0
      • V4.1
        • ODP Enterprise Edition V4.1.0
      • V4.2
        • ODP Enterprise Edition V4.2.2
        • ODP Enterprise Edition V4.2.1
    • Community Edition
      • V4.0
        • ODP Community Edition V4.0.0
      • V4.2
        • ODP Community Edition V4.2.0
        • ODP Community Edition V4.2.1
      • V4.1
        • ODP Community Edition V4.1.0

Download PDF

What is ODP? Deployment modes Deploy ODP by using OCP Overview Deploy ODP by using the CLI Use OBD to deploy ODP Basic operations Parameter summary View and modify parameters check_tenant_locality_change client_max_connections client_sock_option_flag_out client_tcp_keepcnt client_tcp_keepidle client_tcp_keepintvl client_tcp_user_timeout cluster_count_high_water_mark cluster_expire_time config_server_refresh_interval congestion_fail_window congestion_failure_threshold congestion_retry_interval current_local_config_version default_buffer_water_mark default_inactivity_timeout digest_sql_length enable_async_log enable_async_pull_location_cache enable_binlog_service enable_causal_order_read enable_client_ip_checkout enable_cluster_checkout enable_congestion enable_connection_diagnosis enable_extra_prometheus_metric enable_full_username enable_ob_protocol_v2 enable_pl_route enable_primary_zone enable_prometheus enable_proxy_scramble enable_qos enable_reroute enable_sequence_prefetch enable_standby enable_stat enable_syslog_file_compress enable_trace enable_trace_stats enable_trans_detail_stats enable_transaction_internal_routing enable_weak_reroute fetch_proxy_bin_random_time fetch_proxy_bin_timeout flow_high_water_mark hot_upgrade_exit_timeout hot_upgrade_failure_retries idc_list_refresh_interval ignore_local_config internal_cmd_mem_limited log_cleanup_interval long_async_task_timeout max_syslog_file_time metadb_server_state_refresh_interval monitor_stat_dump_interval monitor_stat_high_threshold need_convert_vip_to_tname net_config_poll_timeout obproxy_read_only obproxy_sys_password enable_sharding enable_standby enable_stat enable_strict_stat_time enable_sync_all_stats enable_syslog_file_compress enable_trace enable_trace_stats enable_trans_detail_stats enable_transaction_internal_routing enable_transaction_split enable_weak_reroute enable_xa_route fetch_proxy_bin_random_time fetch_proxy_bin_timeout flow_consumer_reenable_threshold flow_event_queue_threshold flow_high_water_mark flow_low_water_mark hot_upgrade_exit_timeout hot_upgrade_failure_retries hot_upgrade_rollback_timeout idc_list_refresh_interval ignore_local_config internal_cmd_mem_limited ldg_info_refresh_interval log_cleanup_interval log_dir_size_threshold log_file_percentage long_async_task_timeout
OceanBase logo

The Unified Distributed Database for the AI Era.

Follow Us
Products
OceanBase CloudOceanBase EnterpriseOceanBase Community EditionOceanBase seekdb
Resources
DocsBlogLive DemosTraining & Certification
Company
About OceanBaseTrust CenterLegalPartnerContact Us
Follow Us

© OceanBase 2026. All rights reserved

Cloud Service AgreementPrivacy PolicySecurity
Contact Us
Document Feedback
  1. Documentation Center
  2. OceanBase Database Proxy
  3. V4.2.2
iconOceanBase Database Proxy
V 4.2.2
  • V 4.3.6
  • V 4.3.4
  • V 4.3.3
  • V 4.3.2
  • V 4.3.1
  • V 4.3.0
  • V 4.2.3
  • V 4.2.2
  • V 4.2.0 and earlier

Distributed transaction routing

Last Updated:2026-04-14 09:41:35  Updated
share
What is on this page
Example

folded

share

In OceanBase Database V4.1.0 and later, a transaction can be executed on multiple nodes, not just the one that starts the transaction. When a transaction contains multiple read/write statements and the accessed data is in different partitions, OceanBase Database Proxy (ODP) can send the requests in the transaction to the OBServer nodes where the data resides, rather than the node that starts the transaction. This can reduce remote plans and improve the transaction performance of OceanBase Database.

You can enable distributed transaction routing by configuring the following ODP parameters:

ALTER PROXYCONFIG SET enable_ob_protocol_v2 = true;
ALTER PROXYCONFIG SET enable_transaction_internal_routing = true;

Note

Only the root@proxysys and root@sys accounts have the privilege to execute the ALTER PROXYCONFIG statement.

Example

  1. Execute the following statements to enable the OceanBase 2.0 protocol and distributed transaction routing:

    ALTER PROXYCONFIG SET enable_ob_protocol_v2 = true;
    ALTER PROXYCONFIG SET enable_transaction_internal_routing = true;
    
  2. Execute the following statements to create a table, start a transaction, and initiate a query:

    • Create a table

      obclient [test]> CREATE TABLE T0(C1 INT)  PARTITION BY HASH(C1) PARTITIONS 8;
      
    • Start a transaction

      obclient [test]> BEGIN;
      
    • Initiate a query

      obclient [test]> SELECT * FROM T0 WHERE C1=0;
      

      Partition routing is performed for the next statement after the query, even if this statement is the first statement of the transaction.

  3. Execute the following statement to query the routing process in ODP:

    obclient [test]> EXPLAIN ROUTE INSERT INTO T0 VALUES(7)\G
    

    The output is as follows:

    *************************** 1. row ***************************
    Route Plan:
    Trans First Query:"SELECT * FROM T0 WHERE C1=0"
    Trans Current Query:"EXPLAIN ROUTE INSERT INTO T0 VALUES(7)"
    
    Route Prompts
    -----------------
    > ROUTE_INFO
      [INFO] Will route to partition server or routed by route policy
    
    Route Plan
    -----------------
    > SQL_PARSE:{cmd:"COM_QUERY", table:"T0"}
    > ROUTE_INFO:{route_info_type:"USE_PARTITION_LOCATION_LOOKUP", in_transaction:true}
    > LOCATION_CACHE_LOOKUP:{mode:"oceanbase"}
      > TABLE_ENTRY_LOOKUP_DONE:{table:"T0", table_id:500021, partition_num:8, table_type:"USER TABLE", entry_from_remote:false}
      > PARTITION_ID_CALC_START:{}
        > EXPR_PARSE:{col_val:"=7"}
        > RESOLVE_EXPR:{part_range:"[7 ; 7]"}
          > RESOLVE_TOKEN:{token_type:"TOKEN_INT_VAL", resolve:{"BIGINT":7}, token:"7"}
        > CALC_PARTITION_ID:{part_description:"partition by hash(INT(binary)) partitions 8"}
      > PARTITION_ID_CALC_DONE:{partition_id:200012, level:1, partitions:"(p7)"}
      > PARTITION_ENTRY_LOOKUP_DONE:{leader:"10.10.10.1:50109", entry_from_remote:false}
    > ROUTE_POLICY:{chosen_route_type:"ROUTE_TYPE_LEADER"}
    > CONGESTION_CONTROL:{svr_addr:"10.10.10.1:50109"}
    

Previous topic

Strategy-based routing
Last

Next topic

Rerouting
Next
What is on this page
Example