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 · 14578 views
    This topic created in 5237 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   ·   Solana   ·   4509 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 10:06 · PVG 18:06 · LAX 03:06 · JFK 06:06
    ♥ Do have faith in what you're doing.