如何从多个线程同时访问MySQL

2024-03-26

我们正在对 MySQL 进行一个小型基准测试,希望了解它对我们的数据的执行情况。

该测试的一部分是看看当多个并发线程用各种查询攻击服务器时它是如何工作的。

The MySQL 文档 http://dev.mysql.com/doc/refman/5.0/en/c.html(5.0) 对于多线程客户端并不太清楚。我应该指出,我确实链接了线程安全库(libmysqlclient_r.so)

我正在使用准备好的语句并执行读取(选择)和写入(更新、插入、删除)。

  • 我应该为每个线程打开一个连接吗?如果是这样:我该怎么做......看来mysql_real_connect()返回我调用时得到的原始数据库句柄mysql_init())
  • 如果不是:我如何确保结果和方法,例如mysql_affected_rows返回正确的值,而不是与其他线程的调用冲突(互斥/锁可以工作,但感觉不对)

作为一个相当大的 C 应用程序的维护者,该应用程序从多个线程进行 MySQL 调用,我可以说我在每个线程中简单地建立一个新连接没有任何问题。我遇到的一些警告:

  • 编辑:看来这个项目符号仅适用于 此页面适合您的版本:就像你说的你已经在做的那样,链接到libmysqlclient_r.
  • Call mysql_library_init() http://dev.mysql.com/doc/refman/5.0/en/mysql-library-init.html(一次,从main())。阅读有关在多线程环境中使用的文档,了解为什么有必要。
  • 制作一个新的MYSQL结构使用mysql_init() http://dev.mysql.com/doc/refman/5.0/en/mysql-init.html在每个线程中。这有调用的副作用mysql_thread_init() http://dev.mysql.com/doc/refman/5.0/en/mysql-thread-init.html为你。mysql_real_connect()与往常一样,在每个线程内都有其线程特定的 MYSQL 结构。
  • 如果您要创建/销毁大量线程,您将需要使用mysql_thread_end() http://dev.mysql.com/doc/refman/5.0/en/mysql-thread-end.html在每个线程的末尾(并且mysql_library_end() http://dev.mysql.com/doc/refman/5.0/en/mysql-library-end.html在......的最后main())。无论如何,这是一个很好的做法。

基本上不分享MYSQL结构或特定于该结构创建的任何内容(即MYSQL_STMTs) 并且它将按您的预期工作。

对我来说,这似乎比创建连接池要少。

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

如何从多个线程同时访问MySQL 的相关文章

随机推荐

  • iOS 11 - 使用大标题模式时的 UINavigationItem titleView

    我试图理解这是一个错误还是预期的行为 On iOS 10之前我们可以设置一个自定义标题 使用navigationItem titleView On iOS 11 当设置我们的navigationItem largeTitleDisplayM
  • 如何测试无损双精度/整数转换?

    我有一个 double 和一个 int64 t 我想知道它们是否具有完全相同的值 以及将一种类型转换为另一种类型是否不会丢失任何信息 我当前的实现如下 int int64EqualsDouble int64 t i double d ret
  • 为什么我不能对 void 指针的强制转换进行算术运算?

    void foo void ptr int numBytes char ptr numBytes 这不能在 C 中编译 我知道替代方案 但为什么这不起作用呢 问题是什么 问题 问题是 char ptr不会产生lvalue 这意味着该值无法修
  • 如何将百分比变量格式化为小数点后两位?

    该程序基本上处理文本文件 读取数据并执行功能 while s hasNext name s next mark s nextDouble double percent mark tm 100 System out println Stude
  • android中如何区分480X800和480X854屏幕?

    如何区分 480X800 和 480X854 屏幕 我们可以选择将一张图像放在 hdpi 文件夹中 在我的情况下 480X800 图像不支持 480X854 图像 它在底部显示一个空白区域 有什么想法吗 编辑 我将图像设置为背景 在我的布局
  • wordpress 插件 -> 调用未定义函数 wp_get_current_user()

    我正在尝试使用函数 wp get current user 获取插件中的当前用户信息 但我越来越Call to undefined function wp get current user 显然发生这种情况是因为文件 wp includes
  • 如何路由用户配置文件 URL 以跳过控制器?

    现在我的用户个人资料 URL 如下所示 http example com users joeschmoe http example com users joeschmoe 这表明show用户控制器中的方法 我理想的做法是提供这样的用户个人资
  • Winforms DataGridView 中的超链接单元格

    我有一个包含以下数据的 datagridview ContactType Contact Phone 894356458 Email email protected cdn cgi l email protection 在这里 我需要显示数
  • 是否可以为每个商店定义 Magento 布局更新

    我有一个 Magento 安装运行两个不同的网站 一个销售电子书 另一个不销售 因此业务团队希望看到 我的下载 链接从应用程序 我的帐户 区域的客户导航块中删除 我可以看到 design frontend base layout downl
  • AttributeError:模块“keras.engine”没有属性“input_layer”

    我正在尝试使用谷歌colab 但我一直遇到 keras 的问题 它说 AttributeError 模块 keras engine 没有属性 input layer 然而 检查他们的github库 keras engine中有一个input
  • go build 与 strip 的 golang strip 符号

    为什么剥离符号不同strip and go build ldflags s w see here https stackoverflow com questions 29599209 how to build a release versi
  • Android:startActivityForResult 的 resultCode 总是为 0? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 由于某种原
  • 在rails控制台中查看回滚错误的原因

    我正在尝试通过 Rails 控制台更新记录 但收到回滚错误 Project find 118 update attributes featured gt true Project Load 2 6ms SELECT projects FRO
  • 从下到上显示活动

    我想展示一个activity到另一个从下到上的动画使用Intent 给我一些例子 如下所示 Intent i2 new Intent main this test class startActivity i2 从下到上有动画 在 res a
  • Linq - 在列表中按周分组

    我想按周对我的数据进行分组 如下所示 var result stats GroupBy i gt SqlFunctions DatePart week i date Select g gt new ReportModel clicks g
  • 如何计算两个单词之间的相似度以检测它们是否重复?

    我有两个单词 我想计算它们之间的相似度 以便对它们是否重复进行排名 如何使用深度学习 NLP 方法实现这一目标 这里有一些解决文本相似性的方法 基于字符串的方法 给定 2 个句子字符串计算余弦相似度 https stackoverflow
  • array_key_exists 不起作用

    array key exists 不适用于大型多维数组 对于前 arr array 1 gt 10 2 gt array 21 gt 21 22 gt 22 23 gt array test gt 100 231 gt 231 3 gt 3
  • 嵌入时间线中的多个推特提要

    我现在正在开发一个网站 其中会有多个公司简介 每个个人资料都需要有一个 Twitter feed 并且在每个 feed 中我需要能够包含至少 2 个 Twitter 用户的推文 正在分析的公司和网站的 feed 本身 可能还有第三个 我有点
  • 提示用户输入密码 - Google OpenID Connect

    我们正在尝试将 Google 的 OpenID Connect 用于商业网络应用程序 但担心用户会使应用程序保持打开状态 并且未经授权的用户将登录 因为用户仍然登录到 Google 因此 OpenID Connect 只是让他们直接登录 W
  • 如何从多个线程同时访问MySQL

    我们正在对 MySQL 进行一个小型基准测试 希望了解它对我们的数据的执行情况 该测试的一部分是看看当多个并发线程用各种查询攻击服务器时它是如何工作的 The MySQL 文档 http dev mysql com doc refman 5