如何解决TiDB 负载平衡无法通过 MYSQL 连接器 C# .net 核心工作
我已经为我的 .net 核心应用程序设置了 TiDB。 我正在将 TiDB 与 .net 核心应用程序中的 MysqL 连接器连接起来。 下面是我的连接字符串
server=server1,server2,server3;Port=4000;UID=test_user;PWD=****;database=Test_database;ConnectionReset=false;
因为我已经用逗号分隔符指定了连接字符串中的所有节点,所以当试图加载一些负载时,它总是转到第一个节点。 理想情况下,请求负载应该分布在所有节点上。
我运行了 SHOW FULL PROCESSLIST
命令来检查仅显示在第一个节点中的应用请求。
这是我连接 TiDB 的源代码。
public async Task<Error> ExecuteStatementAsync(Context ctx,MysqLCommand command)
{
Error error = default;
try
{
using (MysqLConnection connection = new MysqLConnection(_connectionString))
{
MysqLTransaction trans = default;
try
{
await connection.OpenAsync();
trans = connection.BeginTransaction();
using MysqLCommand cmd = command;
cmd.Connection = connection;
cmd.Transaction = trans;
cmd.Prepare();
await cmd.ExecuteNonQueryAsync();
trans.Commit();
return null;
}
catch (Exception ex)
{
// populate error
if (trans != null)
{
trans.Rollback();
}
return error;
}
}
}
catch (Exception ex)
{
// populate error
return error;
}
}
public async Task<(DataTable,Error)> SelectAsync(Context ctx,MysqLCommand command,string queryIdentifier)
{
Error error = default;
try
{
using (MysqLConnection connection = new MysqLConnection(_connectionString))
{
DataTable dt = new DataTable();
MysqLCommand cmd = command;
try
{
await connection.OpenAsync();
cmd.Connection = connection;
cmd.Prepare();
using (DbDataReader reader = await cmd.ExecuteReaderAsync())
{
dt.Load(reader);
}
return (dt,null);
}
catch (Exception ex)
{
return (null,error);
}
}
}
catch (Exception ex)
{
return (null,error);
}
}
代码或连接字符串有什么问题吗? 为什么会这样?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。