刚刚入职不久,一个陪伴项目组走过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. js原始数据类型和引用数据类型=>callback数据传输原理

    摘要:js的数据类型有种划分方式为 原始数据类型和 引用数据类型. 原始数据类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.栈区包括了 变量的标识符和变量的值. ...

  2. Rails5 radio_button

    容易错,集中记下来 首先是radio button的三种形式  函数名  参数意义  radio_button_tag(prop, value [, opts])  prop: radio的属性  v ...

  3. unable to unroll loop 报错

    unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations) 原本代码 f ...

  4. bzoj 1724: [Usaco2006 Nov]Fence Repair 切割木板【堆】

    如果反着看,看成合并木板,就和合并果子一样了,把若干块放进一个小根堆,然后每次取出两个合并,把合并结果加进答案和堆里 代码里小根堆用优先队列实现(懒 #include<iostream> ...

  5. OpenGL 2D模式

    // // left top 这里设置的默认是左上角 // void push_view2d(int left, int top, int width, int height) { //glPushA ...

  6. ROS-USB摄像头

    前言:演示使用usb摄像头功能,推荐使用方法二. 首先要有一个usb摄像头,本次使用的是罗技(Logitech)摄像头. 一.使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ...

  7. SVN版本库的备份及迁移

    备份某个版本库:打开控制台窗口 1.备份某个版本库: svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile eg:svnadmin du ...

  8. java IO流技术 之 File

    IO流技术 概念:input - output 输入输出流: 输入:将文件读到内存中: 输出:将文件从内存中写出到其他地方 作用:主要就是解决设备和设备之间的数据传输问题. File :文件类的使用十 ...

  9. eclipse中folder、source folder和package的区别

    今天做ssm项目时,突然发现了这个问题,特别好奇,sqlSessionFactory.xml文件如何找到: 1.放在src/hello目录下: InputStream inputStream = Re ...

  10. Scala-基础-函数(2)

    import junit.framework.TestCase //函数(2) //知识点-默认参数,带名参数,变长参数,过程 class Demo1 extends TestCase { //测试方 ...