MySQL:选择查询执行和结果获取时间随着连接数量的增加而增加

2023-12-11

我的服务器应用程序通过单独的线程与 MySQL 建立多个连接。每个连接都会触发一个SELECT查询并获取结果,然后应用程序将其返回给其连接的用户。

我正在使用InnoDB。令我惊讶的是,我发现很奇怪的是,如果我增加 MySQL 的连接数量,查询性能就会下降,结果获取时间也会增加。下面的表格显示了相同的内容。

这个数据是当我在 MySQL 表中有 3333 条记录时生成的SELECT基于给定的随机参数的查询会从中获取大约 450 条记录。每条记录大约有 10 个字段,所有字段总共包含 1.2 KB 的数据。 (因此,单SELECT查询总共获取 1.2 * 450 = 540 KB 数据)



╔═══════════╦═══════════════╦══════════════╗
║ Number of ║Query execution║ Result fetch ║
║connections║  time range   ║  time range  ║
║ to MySQL  ║ (in seconds)  ║ (in seconds) ║ 
╠═══════════╬═══════════════╬══════════════╣
║     1     ║ 0.02 to 0.06  ║ 0.03 to 0.18 ║
║     7     ║ 0.23 to 0.64  ║ 0.54 to 0.74 ║
║    17     ║ 0.32 to 1.71  ║ 0.53 to 1.18 ║
║    37     ║ 0.37 to 2.01  ║ 0.70 to 1.70 ║
║   117     ║ 1.13 to 3.29  ║ 2.48 to 3.25 ║
╚═══════════╩═══════════════╩══════════════╝
  

我在这里不明白的是,为什么当连接数增加时,MySQL 会花费更多时间?特别是当没有对表进行更新时,MySQL 应该处理SELECT来自单独线程中每个连接的请求。从而并发处理查询。因此,理想情况下,性能和获取不应显着下降。

我不介意与数据库建立单一连接,但问题是我的服务器性能会随之显着下降。成千上万的用户(连接到我的服务器)将不得不等待该单个线程轮到他们。

在解决了一些相关问题后,我尝试增加innodb_buffer_pool_size到 1 GB 但运气不好。

这是我的所有 InnoDB 参数:

innodb_adaptive_flushing    ON
innodb_adaptive_flushing_lwm    10
innodb_adaptive_hash_index  ON
innodb_adaptive_max_sleep_delay 150000
innodb_additional_mem_pool_size 2097152
innodb_api_bk_commit_interval   5
innodb_api_disable_rowlock  OFF
innodb_api_enable_binlog    OFF
innodb_api_enable_mdl   OFF
innodb_api_trx_level    0
innodb_autoextend_increment 64
innodb_autoinc_lock_mode    1
innodb_buffer_pool_dump_at_shutdown OFF
innodb_buffer_pool_dump_now OFF
innodb_buffer_pool_filename ib_buffer_pool
innodb_buffer_pool_instances    8
innodb_buffer_pool_load_abort   OFF
innodb_buffer_pool_load_at_startup  OFF
innodb_buffer_pool_load_now OFF
innodb_buffer_pool_size 1073741824
innodb_change_buffer_max_size   25
innodb_change_buffering all
innodb_checksum_algorithm   crc32
innodb_checksums    ON
innodb_cmp_per_index_enabled    OFF
innodb_commit_concurrency   0
innodb_compression_failure_threshold_pct    5
innodb_compression_level    6
innodb_compression_pad_pct_max  50
innodb_concurrency_tickets  5000
innodb_data_file_path   ibdata1:12M:autoextend
innodb_data_home_dir    
innodb_disable_sort_file_cache  OFF
innodb_doublewrite  ON
innodb_fast_shutdown    1
innodb_file_format  Antelope
innodb_file_format_check    ON
innodb_file_format_max  Antelope
innodb_file_per_table   ON
innodb_flush_log_at_timeout 1
innodb_flush_log_at_trx_commit  2
innodb_flush_method normal
innodb_flush_neighbors  1
innodb_flushing_avg_loops   30
innodb_force_load_corrupted OFF
innodb_force_recovery   0
innodb_ft_aux_table 
innodb_ft_cache_size    8000000
innodb_ft_enable_diag_print OFF
innodb_ft_enable_stopword   ON
innodb_ft_max_token_size    84
innodb_ft_min_token_size    3
innodb_ft_num_word_optimize 2000
innodb_ft_result_cache_limit    2000000000
innodb_ft_server_stopword_table 
innodb_ft_sort_pll_degree   2
innodb_ft_total_cache_size  640000000
innodb_ft_user_stopword_table   
innodb_io_capacity  200
innodb_io_capacity_max  2000
innodb_large_prefix OFF
innodb_lock_wait_timeout    50
innodb_locks_unsafe_for_binlog  OFF
innodb_log_buffer_size  268435456
innodb_log_compressed_pages ON
innodb_log_file_size    262144000
innodb_log_files_in_group   2
innodb_log_group_home_dir   .\
innodb_lru_scan_depth   1024
innodb_max_dirty_pages_pct  75
innodb_max_dirty_pages_pct_lwm  0
innodb_max_purge_lag    0
innodb_max_purge_lag_delay  0
innodb_mirrored_log_groups  1
innodb_monitor_disable  
innodb_monitor_enable   
innodb_monitor_reset    
innodb_monitor_reset_all    
innodb_old_blocks_pct   37
innodb_old_blocks_time  1000
innodb_online_alter_log_max_size    134217728
innodb_open_files   300
innodb_optimize_fulltext_only   OFF
innodb_page_size    16384
innodb_print_all_deadlocks  OFF
innodb_purge_batch_size 300
innodb_purge_threads    1
innodb_random_read_ahead    OFF
innodb_read_ahead_threshold 56
innodb_read_io_threads  64
innodb_read_only    OFF
innodb_replication_delay    0
innodb_rollback_on_timeout  OFF
innodb_rollback_segments    128
innodb_sort_buffer_size 1048576
innodb_spin_wait_delay  6
innodb_stats_auto_recalc    ON
innodb_stats_method nulls_equal
innodb_stats_on_metadata    OFF
innodb_stats_persistent ON
innodb_stats_persistent_sample_pages    20
innodb_stats_sample_pages   8
innodb_stats_transient_sample_pages 8
innodb_status_output    OFF
innodb_status_output_locks  OFF
innodb_strict_mode  OFF
innodb_support_xa   ON
innodb_sync_array_size  1
innodb_sync_spin_loops  30
innodb_table_locks  ON
innodb_thread_concurrency   8
innodb_thread_sleep_delay   0
innodb_undo_directory   .
innodb_undo_logs    128
innodb_undo_tablespaces 0
innodb_use_native_aio   OFF
innodb_use_sys_malloc   ON
innodb_version  5.6.28
innodb_write_io_threads 16

有人可以点亮吗?这困扰了我很长时间。

(Note:我在这个问题中没有提到实际的查询,因为查询有点复杂,而且这个问题与该查询无关。但这是在查询相同时随着连接数的增加而导致性能下降的问题)

UPDATE 1

Here is SHOW CREATE TABLE我的表的输出:

CREATE TABLE `profiles` (
  `SRNO` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `HANDLE_FIRST` int(10) unsigned NOT NULL,
  `HANDLE_SECOND` bigint(20) unsigned NOT NULL,
  `USERID` binary(16) NOT NULL,
  `UNIQUESTRING` char(10) NOT NULL,
  `CLIENT_VERSION` smallint(5) unsigned NOT NULL,
  `ISCONNECTED` bit(1) NOT NULL,
  `ISPROFILEPRESENT` bit(1) NOT NULL,
  `USERNAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `GENDER` tinyint(1) DEFAULT NULL,
  `DND` bit(1) DEFAULT NULL,
  `STATUS` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROFILE_URL` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`SRNO`),
  UNIQUE KEY `USERID` (`USERID`),
  KEY `USERID_INDEX` (`USERID`),
  KEY `UNIQUESTRING_INDEX` (`UNIQUESTRING`),
  KEY `ISCONNECTED_INDEX` (`ISCONNECTED`),
  KEY `ISPROFILEPRESENT_INDEX` (`ISPROFILEPRESENT`)
) ENGINE=InnoDB AUTO_INCREMENT=9250 DEFAULT CHARSET=utf8


CREATE TABLE `blockers` (
  `BLOCKER_PROFILE_SRNO` bigint(20) unsigned NOT NULL,
  `BLOCKED_PROFILE_SRNO` bigint(20) unsigned NOT NULL,
  UNIQUE KEY `BLOCKER_PROFILE_SRNO` (`BLOCKER_PROFILE_SRNO`,`BLOCKED_PROFILE_SRNO`),
  KEY `BLOCKER_PROFILE_SRNO_INDEX` (`BLOCKER_PROFILE_SRNO`),
  KEY `BLOCKED_PROFILE_SRNO_INDEX` (`BLOCKED_PROFILE_SRNO`),
  CONSTRAINT `fk_BlockedIndex` FOREIGN KEY (`BLOCKED_PROFILE_SRNO`) REFERENCES `profiles` (`SRNO`),
  CONSTRAINT `fk_BlockerIndex` FOREIGN KEY (`BLOCKER_PROFILE_SRNO`) REFERENCES `profiles` (`SRNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

这是我正在运行的查询:

select  prfls.*
    from  profiles as prfls
    left outer join  blockers as blkr1 on blkr1.blocker_profile_srno = prfls.srno
      and  blkr1.blocked_profile_srno = 6443
    left outer join  blockers as blkr2 on blkr2.blocker_profile_srno = 6443
      and  blkr2.blocked_profile_srno = prfls.srno
    where  blkr1.blocker_profile_srno is null
      and  blkr2.blocker_profile_srno is null
      and  (      (prfls.uniquestring like 'phk5600dcc%')
              or  (prfls.uniquestring like 'phk5600dcf%')
           )
      and  prfls.isconnected=1
      and  prfls.isprofilepresent=1
    limit  450

该查询本质上是一个准备好的语句,其中blocked_profile_srno, blocker_profile_srno and uniquestring每个查询的参数不断变化。然而blocked_profile_srno and blocker_profile_srno始终保持相等(在上面的查询中,它们的值为 6443)。桌子blockers是空白的(我已将其放在适当的位置以供将来使用,但目前其中没有数据)

当 117 个连接同时运行查询时,输出SHOW GLOBAL STATUS LIKE 'Threads_running';大多数时候是1。但是有时会达到27。同时,输出SHOW GLOBAL STATUS LIKE 'Max_used_connections'; was 130

UPDATE 2

我可以从下面的 Rick James 回答中得知,优化查询会减少查询执行时间范围。这个时间范围仍然随着连接数量的增加而增加,但在可接受的范围内。这就是我接受答案的原因。


可能每个连接都在进行全表扫描profiles。让我们尽量避免这种情况。当有数十个查询命中同一个表时,就会有锁导致 InnoDB“陷入困境”。这些计划中的任何一个都将加快查询速度并减少接触的行数(从而减少锁定)。使用建议的“复合”索引将加快查询速度。但是OR妨碍。我看到两个仍然可以查看索引的技巧uniquestring,但要避免部分或全部OR.

(      (prfls.uniquestring like 'phk5600dcc%')
   or  (prfls.uniquestring like 'phk5600dcf%')
)

OR很难优化。

添加这个:

INDEX(isconnected, isprofilepresent, uniquestring)

Then...

Plan A:

prfls.uniquestring         like 'phk5600dc%' AND  -- note common prefix
(      (prfls.uniquestring like 'phk5600dcc%')
   or  (prfls.uniquestring like 'phk5600dcf%')
)

这假设您可以构造该公共前缀。

B计划(转OR into UNION):

( SELECT ...
    WHERE prfls.uniquestring like 'phk5600dcc%' AND ...
    LIMIT 450 )
UNION ALL    -- ? You may want DISTINCT, if there could be dups
( SELECT ...
    WHERE prfls.uniquestring like 'phk5600dcf%' AND ...  -- the only diff
    LIMIT 450 )
LIMIT 450   -- yes, again

计划A(如果可行)利用什么seems成为共同的起始值。不管怎样,B 计划都会起作用,但可能会慢一点,尽管仍然比原来快很多。

其他注意事项...

标志上的索引(您有两个)几乎从未使用过。EXPLAIN SELECT ...可能会表明两者都没有被使用。请提供EXPLAIN对于任何SELECT这需要讨论。

A UNIQUE KEY is a KEY,所以不需要冗余索引USERID.

limit 450-- 您想要哪个 450?没有ORDER BY,查询允许给你any450.(当然,也许这样就可以了。)(并且ORDER BY可能会减慢查询速度。)

我的建议不会“解决”问题,但它们应该在速度变慢变得明显之前增加连接数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL:选择查询执行和结果获取时间随着连接数量的增加而增加 的相关文章

  • 本地数据库缓存的最佳实践?

    我正在开发一个应用程序 该应用程序的部分内容依赖于 MySQL 数据库 在某些情况下 应用程序将在互联网连接 UMTS 有限的环境中运行 特别是延迟较高的环境 应用程序的用户能够登录 并且应用程序用户界面的大部分内容都是从 MySQL 数据
  • PHP 的 PDO 可以限制为单个查询吗?

    PHP 的 PDO 允许通过 query 方法或作为准备好的语句同时执行多个查询 以下两个示例均有效 Two SQL queries query SELECT FROM table DROP table Execute via query
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • 如何在数据库中保存未来(!)日期

    这个问题专门涉及未来的日期和时间 对于过去的值 UTC 无疑是首选 我想知道是否有人对拯救生命的 最佳 方法有建议futureMySQL 数据库中的日期和时间 或者就此而言一般来说 特别是在该列可以保存不同时区时间的情况下 考虑到时区规则可
  • 如何在 MacOS 上卸载 Mysql Shell

    我错误地安装了 MySql Shellhttps dev mysql com doc mysql shell 8 0 en https dev mysql com doc mysql shell 8 0 en 在我的 MacBook Pro
  • MYSql 前 10 名及其他总计

    我的查询运行良好 但我只需要前 10 个供应商 然后我需要将所有剩余的总计放在 所有其他 行中 如果没有单独的查询 我该如何做到这一点LIMIT 10 18446744073709551615 SELECT VENDOR fullname
  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • 创建rest api url以连接mysql数据库

    我想学习如何创建一个rest api url 以便我可以使用该url获取信息并将信息发布到我的mysql数据库中 谷歌搜索了很多并阅读了各种文章 但没有找到任何精确的内容可以学习 所有内容均以 about api 开头 以已创建的其余 ur
  • MySQL:空间查询查找纬度/经度点是否位于给定边界内

    我正在研究谷歌地图搜索功能 其目的是找出 地理位置 点是否位于多边形内 如下图所示 我使用带有 Spatial 扩展的 mysql 5 6 20 我知道它内置有用的几何函数 因此我可以直接从数据库查询地理编码位置 我的目的是熟悉地理空间函数
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in
  • MySQL 中的 group_concat 性能问题

    我添加了一个group concat到一个查询并杀死了性能 添加之前和之后的解释计划是相同的 所以我对如何优化它感到困惑 这是查询的简化版本 SELECT curRow curRow 1 AS row number docID docTyp
  • mysqldb接口错误

    我对 mysqldb python 的 mysql 模块 有一个非常奇怪的问题 我有一个文件 其中包含用于在表中插入记录的查询 如果我从文件中调用函数 它就可以正常工作 但是当尝试从另一个文件调用其中一个函数时 它会抛出一个 mysql e
  • 更改“Mysql 行大小太大”的限制

    我如何更改限制 行大小太大 gt 8126 将某些列更改为 TEXT 或 BLOB 或使用ROW FORMAT DYNAMIC or ROW FORMAT COMPRESSED可能有帮助 在当前行格式中 BLOB768 字节的前缀内联存储
  • 如何启用对 MySQL 服务器的外部访问? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何启用对 MySQL 服务器的外部访问 我可以在本地连接 但无法从网络上的另一个盒子进行连接 我刚刚尝试过 grant all privileges
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • 尝试在 Mac OSX 上的 virtualenv 和 MySQL 中安装 Django CMS 时出错

    当我尝试使用 virutalenv 安装带有 MySQL 的 django CMS 时 出现以下错误 RuntimeError maximum recursion depth exceeded Users ethan Sites env b

随机推荐

  • 在 Woocommerce 单一产品页面和购物车上有条件地设置特定产品价格

    在 Woocommerce 中 我想更改单个产品页面和相关购物车项目上特定产品 在本例中 ID 为 87 的价格 产品价格需要增加 10 美元 但仅限于单个产品页面且仅在外部 以便内部价格或 Woocommerce 中设置的价格不会改变 此
  • 每个请求发送两个 servlet 响应

    我写 因为我无法解决以下问题 我有一个处理一些信息的 servlet 作为响应 我添加了文本和二进制内容 如何从同一个请求开始获得两个响应 然后是两个 html 页面 有可能吗 第一个响应应该继续做他现在所做的事情 而第二个响应将出现一个弹
  • Django ImageField“上传有效的图像。您上传的文件要么不是图像,要么是损坏的图像。”

    我安装了 PIL 但是每当我尝试通过模型的 Django 管理将 png 文件上传到图像字段时 都会收到此错误 上传有效的图像 您上传的文件要么不是图像 要么是损坏的图像 其他图像类型工作正常 我尝试过几个不同的 PNG 文件 我在安装 p
  • PHPExcel 返回损坏的二进制文件

    I want to write a reference xls file and retrieve the result When I tested with a single file it works but when the refe
  • IPC的实现方式

    在 Windows 上实现 IPC 的首选方法是什么 我知道几个类似的 命名管道 共享内存 信号量 也许是COM 虽然我不知道如何 我想知道什么被认为是最强大 最快速 最不容易出错并且易于维护 理解的 几年前 我们针对客户端 服务器情况研究
  • 使用sql语句insert into将blob文件写入数据库

    我目前正在 Advantage Database Server 中寻找通过 sql 将字节流 所谓的 blob 文件 放入表中的可能性 当我建立一个完整的数据库时 我会这样做 TBlobField BaseTable FieldByName
  • 如何获取 HTML Canvas 中旧生成元素的引用?

    看一下这个例子 var c document getElementById myCanvas var ctx c getContext 2d First rectangle created ctx fillRect 20 20 150 10
  • python panda:返回公共行的索引

    抱歉 如果这是一个相当新手的问题 我试图找出两个数据框之间哪些行是共同的 返回值应该是行索引df2常见于df1 我的笨重例子 df1 pd DataFrame col1 cx cx cx2 col2 1 4 12 df1 col2 df1
  • java中具有多个客户端的Socket服务器

    我必须创建一个套接字服务器来监听多个客户端 假设有6个客户端同时连接到服务器 并且每个客户端同时向服务器发送一些命令 如果这些客户端每 1 秒向服务器发送一次消息 我如何处理来自服务器端 6 个客户端的这些消息 将其存储在表中以及对每个客户
  • 如何在 Angular 的反应表单中设置表单控件的值

    我是角度新手 实际上 我正在尝试从服务订阅数据 并将该数据传递给我的表单控件 例如 它就像编辑表单 import Component OnInit from angular core import FormBuilder FormGroup
  • 在 ios 应用程序中获取某人的 Facebook 公开资料

    我正在开发一个需要 Facebook 登录的 ios 应用程序 我已经成功实现了登录过程 但现在我无法找到如何以及在哪里可以获得用户的个人资料信息 如名字 姓氏 个人资料图片等 我的应用程序有权访问名字 姓氏 个人资料图片和电子邮件 以下是
  • Jupyter-Lite 模块/包/库安装

    如何在 Jupyter Lite 中添加更多模块 我尝试了大多数变化 Jupyter Lite 是否在我的机器上使用 python 库 我希望浏览器中的 Jupyterlite 使用本地安装的 python 库 例如在 Jupyter la
  • 如何在 Clojure 中向数组映射添加元素?

    如何在 Clojure 中向数组映射添加元素 我尝试使用 assoc 但它没有被添加 我本质上想为条目数组映射中任何缺失的项目设置默认值 0 defn create entry doc let entry assoc doc id str
  • 结构数组 - 初始化错误

    我在这里创建一些数据结构 使用 MFC 在 MS Visual C 6 0 中编译 是的 它很旧 struct SOpcodeData BYTE m byDataType DWORD m dwMinValue DWORD m dwMaxVa
  • 如何删除数据框中同时出现在两列中相同的行?

    我有一个数据框 DF1 Id1 Id2 0 286 409 1 286 257 2 409 286 3 257 183 在这个 DF 中 对我来说行286 409 and 409 286是一样的 我只想保留其中一行 我所做的所有这一切都是使
  • 事件处理程序是否会阻止垃圾收集的发生?

    如果我有以下代码 MyClass pClass new MyClass pClass MyEvent MyFunction pClass null pClass 会被垃圾回收吗 或者它会在事件发生时继续触发事件吗 我需要执行以下操作才能允许
  • 存储访问框架,takePersistableUriPermission

    在我的应用程序中 用户可以选择下载目录 如果他选择外部可拆卸SD 卡 不是模拟的 SD 卡 而是内存 例如真正的物理 microSD 卡 从 Android 4 4 开始我只能使用以下命令对其进行写入SAF 存储访问框架 我已经弄清楚如何使
  • 同一模型中的 has_many 和 Belongs_to

    我有一个模型用户 它有一个 角色 属性 可以填充 员工 或 经理 现在我想要一种关系 其中经理拥有 许多员工 而员工属于 经理 是否可以在同一模型中执行此操作 我可以想到这样的事情 has many employees class name
  • 按顺序进行控制

    我正在使用表单的文本字段创建一个 XML 文件 当我使用For Each loop For each Ctrl in Me Controls dosomething Next 它不按顺序排列它们 也就是说 它首先需要TextBox在中间 然
  • MySQL:选择查询执行和结果获取时间随着连接数量的增加而增加

    我的服务器应用程序通过单独的线程与 MySQL 建立多个连接 每个连接都会触发一个SELECT查询并获取结果 然后应用程序将其返回给其连接的用户 我正在使用InnoDB 令我惊讶的是 我发现很奇怪的是 如果我增加 MySQL 的连接数量 查