› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
xatest
V2EX  ›  MySQL

MySQL API的异步C/C++实现~

  •  
  •   xatest ·
    aoxu · Jan 9, 2012 · 14990 views
    This topic created in 5372 days ago, the information mentioned may be changed or developed.
    参考: http://stackoverflow.com/questions/38447/asynchronous-mysql-connector-for-c-or-c

    MySQL的原生API都是同步调用的,会阻塞在网络上,请问是否有比较可靠的异步连接、发送、接收的C/C++实现方法,可以把MySQL的基本操作(增删改查原子操作)以网络事件通知异步实现?
    9 replies  •  1970-01-01 08:00:00 +08:00
    gowinder
        1
    gowinder  
       Jan 10, 2012
    要自己封装,做异步操作完成通知,如果是单连接,要做操作队列,不然要做连接池,mysql api好像不支持异步
    xatest
        2
    xatest  
    OP
       Jan 11, 2012
    @gowinder 谢谢,目前我的打算是用操作队列缓冲+连接池~
    napoleonu
        3
    napoleonu  
       Jan 11, 2012
    这样做的目的是什么呢,或者是为了解决什么问题呢?
    xatest
        4
    xatest  
    OP
       Jan 11, 2012
    @napoleonu 解决MySQL写操作较多时比较慢的问题~
    napoleonu
        5
    napoleonu  
       Jan 11, 2012
    @xatest 既然你没有特别的需求,那么你应该优化写,而不是想这种怪招,嘿嘿
    gowinder
        6
    gowinder  
       Jan 11, 2012
    优化是第一步.
    如果确实查询很多,就要应该用多线程.
    最根本还是数据库设计的问题.
    wpc009
        7
    wpc009  
       Oct 9, 2012
    @napoleonu 异步解决高并发的重要手段。这一点我是支持LZ的。你提到的优化,目的是缩减同步IO的阻塞时间。众所周知,同步阻塞IO要处理并发就得开n个线程。线程少了会来不及处理,线程多了切换上下文的消耗会严重降低吞吐量。 相比之下,异步IO仅需需要少量线程就可以达到很高的吞吐量,但是前提是线程不能被阻塞。也就是说少量的线程必须一直保持激活状态并且快速处理请求。这种环境下异步数据库接口就显得十分重要了。
    qsun
        8
    qsun  
       Oct 9, 2012
    libdrizzle
    Js
        9
    Js  
       Oct 9, 2012
    不如从了postgresql吧....
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   857 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 20:59 · PVG 04:59 · LAX 13:59 · JFK 16:59
    ♥ Do have faith in what you're doing.