刚刚入职不久,一个陪伴项目组走过3年的DBA离职,在最后的一天给我们培训了下,下面是记录的一些要点,MySQL的使用、表设计学问还是很大的,以后还会陆续学习数据库部分的相关知识。
 
1 insert要写字段名,不能光values,避免库表结构变化 
 
2 不要使用select *,写出确切字段,性能考虑,减少IO,MYSQL优化
 
3 尽量少用联表查询
 
4 不能使用联表更新,尽量少用load data
 
5 数据约束尽量由程序保证
 
6 大数据量排序等操作最好由程序完成
 
7 所有字段定位为not null,数值型用0代替,字符型用"代替
 
8 库、表命名方式,按C风格,表名小写,两个 如beiker_sms_template
 
9 50字节以下的直接使用char,不要使用varchar(update delete会增加开销,数据文件碎片搞,文件系统寻址效率低)
 
10 不同表相同字段需要使用相同的字段名,如user_id
 
11 字段加上comment
 
12 杜绝只增不减的表,要定期删除无效数据
 
13 尽量使用主键
 
14 使用前缀索引
 
create table xxx (
id int(20) 
name varchar(255)
value varchr(255)
NOT NULL DEFAULT ‘0000-00-00 00:00:00′
PRIMARY KEY(‘id’)
KEY `userid` (`userid,`’value’,'id’)
)
 
select * from xxx where userid = xx and value = 
 
提高运行效率
 
15 对于innodb来说,使用主键锁的是一行,使用索引锁的可能不值一行
 
16 对于MyISAM 在进行大批量插入前可以将索引关闭,等全部插入完毕后再开启索引,进行索引更新
 
alter table xxx disable keys; 
insert …… insert效率很高
endable keys; 耗时的是分析索引
 
17 单表数据量建议少于2KW,否则存在性能拐点,需要拆表
 
18 union操作尽量少用,必须的情况下用union all,而不要使用union,两次结果重复的行去除掉,CPU IO消耗会少很多,数据量小的话没事
 
19 not in不会使用索引,建议不要使用in,尽量程序做
 
20 不要用ctrl c停止一个脚本 用kill 否则主从同步会不一致。
0
 

一个DBA对于开发人员使用MySQL的tips的更多相关文章

  1. 阿里云数据库实例的一个db被开发人员删除了 如何恢复

    1没有 逻辑备份的话. 如下操作即可 可以将那个临时实例的需要导的db用逻辑备份出来恢复到主实例就行了 好多朋友都在问,RDS中把数据恢复到7天内任意时间点的功能在哪里啊? 其实挺简单的,只需要五步操 ...

  2. DBA_Oracle Database 11g 面向 DBA 和开发人员的重要特性

     2015-01-23 Created By BaoXinjian

  3. 每一个开发人员都应该有一款自己的App

    [谋哥每天一干货]          这篇文章不是鸡汤,是谋哥自己的感悟了. 谋哥近期每日一干货,坚持每天写,才发现这个事情你要是能坚持一年超级难.365天无论刮风下雨.心情好或不好.生病或生气.每天 ...

  4. Web开发人员vs网页设计师

    Web开发人员vs网页设计师 我们都遇到过,但实际的区别是什么?如果您是该领域的新手,请阅读详细内容,这些内容比您想象的更重要. 经过几周(或几个月)的规划和准备,进行市场调查,与其他企业家交谈,现在 ...

  5. Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

    Qt/C++开发人员眼中的Obj-C      对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这 ...

  6. [置顶] think in java interview-高级开发人员面试宝典(一)

    “生死六重门” 无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文! 相信这篇文章对你的职业生涯和阶值观会造成重大的改变! 如果你是一名PM或者是管理者正在物色合适的开发 ...

  7. 为Android开发人员定制的搜索引擎

    我在谷歌上定制了一个专门针对Android开发人员的搜索引擎.载入慢的童鞋考虑FanQiang吧,作为技术人员使用Google才是王道. 在此推荐给大家:cx=01590883735180208228 ...

  8. think in java interview-高级开发人员面试宝典(一)

    "生死六重门" 无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文! 相信这篇文章对你的职业生涯和阶值观会造成重大的改变! 如果你是一名PM或者是管理 ...

  9. 开发人员不得不知的MySQL索引和查询优化

    转载:https://blog.csdn.net/enmotech/article/details/88809822 本文主要总结了慢查询优化的过程中常用的以及不合理的操作,适合有 MySQL 基础的 ...

随机推荐

  1. ADSI和其他内容

    ADSI (Active Directory Services Interface)是Microsoft推出的一项技术,它统一了许多底层服务的编程接口,程序员可以使用一致的对象技术来访问这些底层服务. ...

  2. uiautomatorviewer详解

    一,uiautomatorviewer是什么? Android 4.1发布的,uiautomator是用来做UI测试的.也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期.比如 登陆界 ...

  3. JavaScript01天学习笔记分享

    01知识点 JavaScript 代码运行在浏览器(后缀名.js) 和java完全不同的东西,只是名称类型而已 src 引用脚本   <Script></Script> ale ...

  4. 本地编译全志R系列的步骤7(Ubuntu 17.04非长期支持版本)

    本地编译全志R系列的步骤7(Ubuntu 17.04非长期支持版本) 2017/6/29 13:49 0.获取全志R系列的Android源码包: 请通过渠道/代理商/方案公司获取全志R系列的Andro ...

  5. python模块中的__all__属性

    转自:http://blog.csdn.net/sxingming/article/details/52903377 python模块中的__all__属性,可用于模块导入时限制,如:from mod ...

  6. Codeforces_758_D_(区间dp)

    D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...

  7. python游戏开发:pygame事件与设备轮询

    一.pygame事件 1.简介 pygame事件可以处理游戏中的各种事情.其实在前两节的博客中,我们已经使用过他们了.如下是pygame的完整事件列表: QUIT,ACTIVEEVENT,KEYDOW ...

  8. 在CorelDRAW中的自定义彩虹笔刷创建迷幻背景

    在60年代的艺术形式中,迷幻艺术对设计和图形艺术的影响尤为重要.在下面这个CorelDRAW教程中我们主要使用图形纸工具和艺术笔工具创建一个迷幻风格的背景,在这之前我们需要先创建出一个彩虹笔刷. 1. ...

  9. CAD绘制自定义实体(com接口)

    在cad使用过程中,用户可以绘制自定义实体.点击此处下载演示实例. 调用DrawCustomEntity函数,绘制一个自定义实体对象. 下面代码绘制一个自定义实体,C#代码实现如下: private ...

  10. ViewData丶ViewBag和TempData

    案例: public ActionResult Index() { ViewData[; ViewData.Add(); ViewBag.myNum = ; TempData[; Student st ...