今天开始学习Mysql优化技术

随着工作的深入,愈发觉得数据库优化方面知识方面的重要性,于是下载了韩顺平的Mysql优化技术的视频,这里全当课后笔记,里面可能会穿插一些自己的工作经验(感谢韩老师)。

Mysql优化不是一种动作,而是全套动作,包括 :

1.表的设计合理化

2.添加适当的索引

3.分表技术(水平分表,垂直分表)

4.读写分离技术

5.对常用的sql语句使用存储过程(免去了dbms对sql的编译过程,但是降低了可移植性)

6.修改mysql配置(my.ini),比如mysql最大并发量,缓存之类的配置

7.碎片整理,定时清除无用数据

7.硬件升级

表的设计一般遵从3NF

第一范式:1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数  据库都满足1NF),大意就是某字段里面的值,已经能完整的表达这个字段的意思了,不需要在分解成    多个字段去组合表达,比如某会员表有个字段是表示住址address,可以填写为“中国武汉市南湖      区XXX街XXX号”,这已经是一个完整的地址,不需要再把address字段分解
    第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性。一般咱们设计表,  第一个字段就是自增的ID,所以这个唯一性很好满足 
    第三范式:3NF是对字段冗余性的约束,它要求字段没有冗余。什么是冗余,举例比如有班级表,里面有class_id,class_name,和所属年级department三个字段, 学生表里面有st_id,st_name,class_id,通过学生表的class_id就能在班级表里获取到对应的年级department,就不必要再在学生表里增加一个department字段(当然,有时候实际开发中这么设计反而会提高效率,有时候我们为了提高运行效率,就必须降低范式标准,适当保留冗余数据,这个在实际开发中有时会有这种感觉:与其每次拿一条完整的数据都得查另外一张表的字段,还不如直接把字段整合在一张表里面。这个要看具体情况)

后面会跟进学习

时间: 2024-12-15 01:42:46

今天开始学习Mysql优化技术的相关文章

MYSQL优化技术--------------------个人笔记

********************************************************MYSQL数据库的优化技术***********************************************************************面试必须被问到 1:mysql数据库的优化技术 对Mysql的优化是一个综合性的技术,主要包括 1)对表的设计合理化(符合3NF3范式) 2)添加适当的索引(index):[常见的四种:普通索引,主键索引,唯一uniqu

Mysql优化技术

对mysql优化时一个综合性的技术,主要包括 表的设计合理化(符合3NF),部分需要反范式:http://www.cnblogs.com/ChaosJu/p/4543210.html sql语句优化: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引]: 选择合适的存储引擎(MyISAM.InnoDB.Memory): 分表技术(水平分割.垂直分割): 读写[写: update/delete/add]分离: 存储过程 [模块化编程,可以提高速度]: 对my

万字总结:学习MySQL优化原理(转)

本文转自:https://www.tuicool.com/wx/2eMBfmq 前言 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必.因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用. MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间

万字总结:学习MySQL优化原理,这一篇就够了!

前言 说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必.因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用. MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展示了MySQL的逻辑

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe

MYSQL优化_MYSQL分区技术[转载]

MySQL分区技术是用来减轻海量数据带来的负担,解决数据库性能下降问题的一种方式,其他的方式还有建立索引,大表拆小表等等.MySQL分区按照分区的参考方式来分有RANGE分区.LIST分区.HASH分区.KEY分区.本文对这几种分区方式进行了详细的介绍,并且给出了简单的示例,文章简洁明了,对于想要初步了解MySQL分区技术的同学来说是很不错的参考材料. 一.背景介绍 当 MySQL中一个表的总记录数超过了1000万,会出现性能的大幅度下降吗?答案是肯定的.但性能下降的比率由系统的架构.应用程序.

多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化

重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓"好马配好鞍",如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如"精通MySQL"."SQL语句优化"."了解数据库原理"等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入

MySQL数据库优化技术之SQL语句慢查询定位

通过show status命令了解各种SQL的执行频率 MySQL客户端连接成功后,通过使用show [session|global] status 命令可以提供服务器状态信息: 其中的session来表示当前的连接的统计结果,global来表示自数据库启动至今的统计结果,默认是session级别的. show status 常用命令: show status like 'com_%'; 其中com_xxx表示xxx语句所执行的次数: 重点注意com_select, com_insert, co