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. RESTful API后台系统架构设计(Java)

    最近设计和实现了一个JAVA的RESTful API的后台业务系统架构,主要基于Java平台.设计要求是: 性能:平均响应时间(RESTful API)小于2s(平均负载的情况下),并发访问200个以 ...

  2. [个人项目] echarts 实现数据(tooltip)自动轮播插件

    前言 最近, 工作中要做类似这种的项目. 用到了百度的 echarts 这个开源的数据可视化的框架. 因为投屏项目不像PC端的WEB, 它不允许用户用鼠标键盘等交互. 有些图表只能看到各部分的占比情况 ...

  3. 修改Hosts文件提示没有权限怎么办

    解决办法:给host文件赋予权限 1.打开电脑C盘,在目录C:\Windows\System32\drivers\etc 下找到hosts文件 2.右键hosts文件,选择属性 3.点击hosts属性 ...

  4. 移动键盘 滚动input

    window.addEventListener('resize', function () { if(document.activeElement.tagName === 'INPUT'){ docu ...

  5. 解压cpio.gz、zip类型文件

    aix上的oracle介质文件是10gr2_aix5l64_database.cpio.gz 解压方法: gunzip 10gr2_aix5l64_database.cpio.gz cpio -idm ...

  6. CentOS QT can't find lGL

    直接安装: yum install libGL, yum install libGL-devel 库即可.

  7. 使用CSS定位元素实现水平垂直居中效果

    总结一下平时使用CSS技巧使元素达到水平居中效果 相对定位(或绝对定位)实现水平垂直居中: element{ position:relative; /*这个属性也可以是absolute*/ width ...

  8. ZOJ 3960 What Kind of Friends Are You?(读题+思维)

    题目链接 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5592 Japari Park is a large zoo hom ...

  9. 数据存储之第三方FMDB

    上周四.周五在忙公司的事情和炒股,没来得及更新博客,这周就补一下,学习总结下FMDB. FMDB是对sqlite的封装,特别是在多线程情况下,使用sqlite是非常麻烦,而使用FMDB相对简单,下面是 ...

  10. java中变量使用的总结

    java中整数默认为int,小数默认为double. float n5=1.3; 这个句子就会报错,应该修改成这样float n5=1.3f; 八大基本类型 变量类型 位数 范围 备注 Byte 8位 ...