1 开启事务之前需要rollback 连接句柄。(清理垃圾)
2 mysql_ping 失败,程序需要处理重连逻辑;
3 mysql_query()执行的SQL语句是一个以‘/0’结尾的字符串,而mysql_real_query()执行的字符串长度是参数指定的,因此,前者不能不能包含二进制数据(二进制数据中可能会包含‘/0’,导致被认为到达字符串末尾)
实际使用中,推荐使用mysql_real_query
4 mysql C API   中SQL不需要 ';' 结尾;
5 mysql 转义;(老问题了)
6 所有update 语句,建议后边调用函数判断受影响的行数,是否是自己预期值;
7 mysql_real_connect 需要设置连接超时时间,特别是处理重连逻辑的时候,以免程序堵死;
8 程序rollback时候, 需要习惯性的校验应用的错误码,避免错误码没有赋值,调用者以为调用成功,造成漏洞;
9 多线程环境下使用libmysqlclient_r 库,非libmysqlclient 库
10 mysql_real_connect/mysql_init 多线程环境下调用需要加锁;
11 使用mysql_real_escape_string, 需要注意目标缓冲区是 2*n+1 大小;
12 mysql_store_result 这个函数是分配的内存的。 使用完需要释放,避免内存泄露;

13 mysql的事务尽量小,使用完,立即commit或rollback.不要起一个过大的事务。
14 mysql的隔离级别注意使用 Read Commited。不然会产生锁间隙的问题。
15 避免尝试去锁一个不存在的记录,for update语句where条件请使用主键(锁定一个非主键,会默认同时锁定一个主键,这是造成很多死锁的原因)。避免过多的for update。
16 select语句必须使用索引,where条件避免使用 or 或者在条件中运用运算表达式,会造成索引失效。
17 联合索引可以替代单独的索引。如果已有联合索引,不需要重复建立单独的索引。索引过多会导致插入变慢。注意是联合索引的第一个可以省略。 避过(f1,f2),可以省略f1的单独索引,但是不能省略f2的单独索引。
18 where条件,结果集不要太大,如果超过30%,索引会时效,会导致mysql扫描全表。不确定时,请用explain做检测。
19 mysql单表记录保持在1000W以下,以获得较好的性能。
20 mysql数据库链接数不能过多,请保持在200以下。
21 修改mysql 锁等待时间,默认为50s,避免for update等待时间超长,造成系统阻塞 innodb_lock_wait_timeout(修改这个属性需要重启数据库)
22 如果启用事务,可以不必显示的设置set autocommit=0,即使当时autocommit模式为1(直接提交模式),可以通过begin/commit来隐式的调用。
   如果不使用事务,则必须显示的调用 set autocommit=1.因为不能确定,是否某长链接中,有人设置了set autocommit=0.

Mysql使用优化之处(转)的更多相关文章

  1. Mysql - 性能优化之子查询

    记得在做项目的时候, 听到过一句话, 尽量不要使用子查询, 那么这一篇就来看一下, 这句话是否是正确的. 那在这之前, 需要介绍一些概念性东西和mysql对语句的大致处理. 当Mysql Server ...

  2. [MySQL性能优化系列]提高缓存命中率

    1. 背景 通常情况下,能用一条sql语句完成的查询,我们尽量不用多次查询完成.因为,查询次数越多,通信开销越大.但是,分多次查询,有可能提高缓存命中率.到底使用一个复合查询还是多个独立查询,需要根据 ...

  3. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  4. 50多条mysql数据库优化建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...

  5. Mysql数据库优化总结2

    说明:本文的环境为CENTOS 5.5 64 Bit /Mysql 5.1.50 简介:使用Mysql有一段时间了,期间做了不少关于Mysql优化.设计.维护的工作,这两天有时间做一下简单的总结,方便 ...

  6. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. redmine在linux上的mysql性能优化方法与问题排查方案

    iredmine的linux服务器mysql性能优化方法与问题排查方案     问题定位:   客户端工具: 1. 浏览器inspect-tool的network timing工具分析   2. 浏览 ...

  8. 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

随机推荐

  1. 配置Zookeper

    在整个的codis架构之中,codis-proxy将作为所有的codis-server的对外的代理,而在整个的处理之中,codis-proxy所保存的数据一定是所有的codis-server的信息,那 ...

  2. MVC源码分析 - View

    感觉好久没有学习了, 汗. 年就这么过完了, 感觉没有尝到过年的味道. 现在的年过的有些冷清了. 除了体重证明着我过了一个年, 还有一件值得开心的事情, 终于把女朋友变成未婚妻了. 这是一大进步吧. ...

  3. 复刻smartbits的国产网络性能测试工具minismb-如何配置Ping报文

    复刻smartbits的国产网络性能测试工具minismb,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太网测试工具测试任何ip网络设备的端口吞吐率,带宽, ...

  4. myeclipse解决Fail to create the java Virtual Machine

    今天在打开myeclipse的时候,就显示出 Fail to create the java Virtual Machine 这样的一个窗口出来. 解决的方案就是在myeclipse的安装目录下找到m ...

  5. Spring 3.1新特性之二:@Enable*注解的源码,spring源码分析之定时任务Scheduled注解

    分析SpringBoot的自动化配置原理的时候,可以观察下这些@Enable*注解的源码,可以发现所有的注解都有一个@Import注解.@Import注解是用来导入配置类的,这也就是说这些自动开启的实 ...

  6. 爬虫---selenium动态网页数据抓取

    动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...

  7. 测试本地node包

    @subject: 测试本地node包 @author: leinov @date: 2018-10-25 当我们编写一个node包,在发布到npm上之前,需要在本地测试该包.假设我们有一个已经编写好 ...

  8. 【译】如何更好的使用javascript数组

    赶紧阅读读此文,我保证,在过去的几个月里我,我确定我在数组问题上犯过4次错误.于是我写下这篇文章,阅读这篇文章可以让你更准确的使用javascript数组的一些方法 使用Array.includes替 ...

  9. [转]本地 Windows 计算机密码登录 登录 腾讯云 Linux 实例

    本文转自:https://cloud.tencent.com/document/product/213/5436? 登录工具 使用 远程登录软件 ,采用密码登录 Linux 实例(本例中选择使用 Pu ...

  10. Commonjs、AMD、CMD

    CommonJS 该规范的核心思想是允许模块通过 require 方法来同步加载所要依赖的其他模块,然后通过 exports 或 module.exports 来导出需要暴露的接口 require(& ...