我正在开发一种针对 MySQL 数据库生成和运行 SQL 的工具。我正在尝试添加基于用户指定设置限制插入语句大小的功能。我找到了一些关于max_allowed_packet
设置的信息,但我没有找到任何解释如何计算数据包大小的信息。MySQL 文档说“通信数据包是发送到 MySQL 服务器的单个 SQL 语句”,但我不明白 SQL 语句的大小是如何确定的。
我将一条 SQL 语句和一些参数传递给我的驱动程序:
cmd.CommandText= "INSERT INTO myTable VALUES(@int, @date, @text)";
cmd.Parameters.AddWithValue("@int", 1);
cmd.Parameters.AddWithValue("@date", DateTime.Now);
cmd.Parameters.AddWithValue("@text", "how big is this???");
cmd.ExecuteNonQuery();
数据包的大小是否只是所有变量和 SQL 语句的字符串表示中使用的字节的总和?或者我应该根据它们在数据库中占用的空间来计算每个参数的大小,并将其与 SQL 字符串中使用的字节相加?或者是其他东西?我不太确定数据库驱动程序是如何工作的,所以如果你对它们有所了解的话,也许一些关于它的上下文会有所帮助。