SQL操作参数
xSQL 配置文件可用于定义影响 SQL 操作的参数。
这些参数由“name:value”对组成,可以出现在配置文件中其他部分之外的任何地方。例如:
db_params : {
mem_page_size : 256,
disk_page_size : 4096,
db_max_connections : 100,
...
}
sql_scripts : [ script_1.sql, script_2.sql ],
sql_statements: "create table A (i integer);"
...
以下表格列出了可能的选项:
sql_trace
sql_trace: false
启用或禁用 SQL 引擎跟踪功能。如果您希望查看 SQL 引擎的运行日志,可以将此选项设为 true
。默认情况下,我们建议保持关闭状态以提高性能。
sql_port
sql_port: 5001
这是 SQL 服务器的监听端口。您可以根据需要指定 IPv6 或 IPv4 地址和端口号,例如:5001
、"127.0.0.1:5001"
或 "[::1]:5001"
。选择最适合您网络环境的配置方式。
sql_local_sockets
sql_local_sockets: true
如果您的系统支持 Unix 域套接字,启用此选项可以让客户端与服务器之间的通信更加高效。默认情况下,我们建议开启此功能。
sql_n_replicas
sql_n_replicas: 1
设置数据库的冗余级别,确保数据的安全性和可靠性。您可以根据实际需求调整此值,默认为 1。
sql_connect_attempts
sql_connect_attempts: 10
当连接到服务器时,最大尝试次数为 10 次。如果连接失败,系统会自动重试,直到达到最大尝试次数。您可以根据网络状况调整此值,默认为 10 次。
sql_connect_timeout
sql_connect_timeout: 2000
每次连接尝试的超时时间为 2 秒。如果在规定时间内无法建立连接,系统将认为连接失败并进行下一次尝试。默认值为 2 秒。
sql_read_timeout
sql_read_timeout: 120000
读取操作的超时时间为 20 分钟。如果读取时间超过此限制,系统将终止操作。默认值为 20 分钟,您可以根据应用需求调整。
sql_replication_type
sql_replication_type: sql
(已弃用)复制方法可以选择 sql
或 ha
。请注意,此选项已不再推荐使用,请参考最新的文档获取更多信息。
sql_comm_buffer
sql_comm_buffer: 256k
设置 SQL 服务器传输缓冲区的大小,默认为 256 KB。较大的缓冲区可以提高传输效率,但也会占用更多内存。默认值为 64 KB。
sql_server_threads
sql_server_threads: 8
设置 SQL 服务器的工作线程数,默认为 8。根据服务器的硬件配置和负载情况,您可以适当调整此值以优化性能。
sql_server_threads
sql_server_gc_threads
设置用于清理未使用的 MVCC 版本的垃圾回收(GC)线程数量,默认为 0。如果您希望加速垃圾回收,可以增加此值。
sql_use_connection_pool
sql_use_connection_pool: false
是否启用线程池以实现序列的并行处理,默认为 true
。启用线程池可以提高并发处理能力,建议根据应用需求进行调整。
sql_interrupt_timeout
sql_interrupt_timeout: 1000
设置中断超时时间,默认为 1 秒。此参数用于轮询来自客户端的中断请求。如果不需要中断功能,可以将其设为 0 以禁用。您也可以在 sql_servers
部分为不同端口指定不同的中断超时时间。例如:
sql_servers : [
{ port : 5000, interrupt_timeout : 1000 },
{ port : 5001, interrupt_timeout : 1000 },
]
sql_n_shards
sql_n_shards: 2
设置数据库分片的数量。分片可以帮助您更高效地管理和查询大规模数据,默认值根据您的具体需求设定。
sql_compression_level
sql_compression_level: 1
设置所有远程客户端的全局压缩级别。此值可以在 remote_client
或 sql_servers
部分中覆盖,默认为 1。更高的压缩级别可以减少传输数据量,但也可能增加 CPU 负载。
sql_workspace_limit
sql_workspace_limit: 1g
设置 SQL 内部分配器可使用的最大内存量,默认为无限制(0)。如果您希望控制内存使用,可以设置一个合理的上限。
sql_authentication_required
sql_authentication_required: true
是否要求远程 SQL 连接的客户端进行身份验证,默认为 true
。为了确保系统的安全性,建议启用此功能。别名 sql_auth_required
也支持向后兼容性。
sql_login
sql_login: 'user1'
当需要身份验证时,输入登录用户名。请确保使用安全的用户名和密码组合。
sql_password
sql_password: 'mypass'
当需要身份验证时,输入登录密码。建议定期更改密码以增强安全性。
sql_optimizer_params
SQL 优化器的调优参数,帮助您进一步优化查询性能。例如:
sql_optimizer_params : {
# Size of buffer used for batch insert, unsigned,
# default 1024
batch_insert_buffer_size : 1024,
# Preload existing UDFs, the default is false
preload_udf : true
# If set to true, the optimizer chooses the optimal join order for each table, the default is false
optimize_joins : true
},
sql_servers
sql_servers : [ {...} ]
SQL 服务器描述数组。xSQL 将启动指定数量的服务器(务必注意避免与别处指定的 sql_port 发生冲突。)
sql_servers : [
{
# Listen port for SQL server instance, unsigned.
port :5000,
# If true, enable "RSQL backwards compatibility" mode so that applications linked with old (pre-8.2) SmartEDB packages will be able to connect.
protocol_compatibility : false,
# Size of SQL server transfer buffer in bytes, unsigned.
# Default is 'sql_comm_buffer'
comm_buffer : 64k,
# Number of SQL server threads.
# Default is 'sql_server_threads'
server_threads : 8,
# Use Unix domain sockets for client-server interaction.
# Default is sql_local_sockets'
local_socket : true,
# Require authentication for clients, boolean. Default value 'false'
auth_required : false,
# Period in milliseconds to poll the interrupts from the client(s).
# If 0, disable interruption. Default value 100
interrupt_timeout : 500,
# Number of SQL server threads. Default is 'sql_server_gc_threads'
gc_threads : 2,
# Period of activating GC threads in milliseconds.
# Default value is 100 msec
gc_period : 100,
# The level of compression: 0 = no compression; 1 = best speed,
# 9 - best compression. Default value is 0
compression_level : 1,
# SSL settings specific for this server. See the global
# ssl_params section for the description of the parameters
# and their default values. These parameters override the
# global settings. To inherit the global ssl_params settings,
# leave the ssl_params section empty.
ssl_params : {
cipher_list : "HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4",
max_cert_list : 102400,
verify_mode : [verify_peer, verify_fail_if_no_cert],
verify_depth : 100,
cert_file_pem : "sqlservercert.pem",
pkey_file_pem : "sqlserverkey.pem"
}
},
]
remote_client
remote_client :[ "192.168.1.100:5001", "192.168.1.102:5001" ],
可以指定一个远程节点(“分片”)数组来连接,这些节点以 JSON 向量形式给出,每个元素为“<IP/主机名>:<端口>”格式的主机:端口对。如果服务器与客户端之间的通信使用了数据压缩,则必须在参数 sql_compression_level 中为所有客户端指定全局压缩级别。或者,也可以使用包含分片向量的 JSON 对象来指定每个分片的地址和压缩级别。例如:
remote_client : {
shards: [
{
address : "192.168.1.100:5001",
compression_level : 1,
},
{
address : "192.168.1.102:5002",
compression_level : 9,
},
],
}
sql_scripts
sql_scripts : [ script_1.sql, script_2.sql ]
要执行的脚本(文件名)数组。
sql_statements
"create table A (i integer);"
本地SQL脚本。
free_memory_threshold
free_memory_threshold : 4m
当可用内存量降低到该阈值时中止当前事务。无符号,默认值为 1Mb