复习mysql的c编程

 

    06年上半年负责IM项目的时候就搞过很是一段时间嵌入式mysql, 那个时候被温瑞云老是打击我,

比如代码不够美型,老是数据库嵌入c的时候,怎么美观之类问题纠结我。(那个时候总是鄙视

在oracle中用sql写单元测试的历史)。也很是纠结mysql内部的数据类型如此奇怪。

    今天又遇到需要和数据库打交道。记一下笔记:

    1、只有sb才会在需要中文的场合建gbk编码的表

    2、中文必须用utf8来存,这个时候c-api在建立连接的时候,需要配置为utf8

    3、在建立连接的时候最好关闭自动提交事务。

    4、在建立连接时候需要配置,让数据库自动重连。

    5、在建立连接的时候需要配置支持多行语句。

    6、每一句语句后面都自动提交的话,性能最多会慢100倍。

    7、若干条语句后提交一次,其实和自己写sql执行队列按照策略,拼接成多行数据库语句的性能是一模一样。

    8、可以的话,必须要求自己写sql执行队列。这样更灵活,比如做持久化的需求。

    9、包装MYSQL指针的时候尽量避免对该资源上锁,应该post的同一线程来操作数据库。上锁的话,

    在压力测试出现过一个问题,异步io的多次调用,导致同一个线程的定时器得不到cpu时间。而独立线程

    的定时器又由于锁也得不到资源。虽然不是问题,因为可以在每次执行语句的时间检查连接。可是其他类

    似的场合也会有类似的问题。

    10、看到网上好多好多的代码几乎没有看mysql的c文档,居然直接用返回值来检查错误状态。

    其实mysql的c函数基本的形式是,返回0,代表成功,返回非0,代表不成功。然后mysql_errno才是真正的最

    最近一个的错误。

    11、包装接口要考虑: 1)是否语句中含有/0之流的情况; 2)是否需要存blob。

 

    好久没用的东西不能不用,不用就忘记了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值