网站大量收购闲置独家精品文档,联系QQ:2885784924

韩顺平mysql优化笔记.docVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Mysql数据库的优化技术

对mysql优化时一个综合性的技术,主要包括

a:表的设计合理化(符合3NF)

b:添加适当索引(index)[四种:普通索引、主键索引、唯一索引unique、全文索引]

c:分表技术(水平分割、垂直分割)

d:读写[写:update/delete/add]别离

e:存储过程[模块化编程,可以提高速度]

f:对mysql配置优化[配置最大并发数my.ini,调整缓存大小,默认为100,max_connection=1000]

g:mysql效劳器硬件升级

h:定时的去去除不需要的数据,定时进行碎片整理(MyISAM)

什么样的表才是符合3NF(范式)

表的范式,是首先符合1NF,才能满足2NF,进一步满足3NF

1NF:即表的列的具有原子性,不可再分解,即列的信息,不能分解,只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sqlserver),就自动的满足1NF

?数据库的分类

关系型数据库:mysql/oracle/db2/informix/sysbase/sqlserver

非关系型数据库:(特点:面向对象或者集合)

NoSql数据库:MongoDB(特点是面向文档)

2NF:表中的记录是唯一的,就满足2NF,通常我们设计一个主键来实现

3NF:即表中不要有冗余数据,就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放.比方下面的设计就是不满足3NF:

反3NF:但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保存冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

案例:

Sql语句本身的优化

问题是:如何从一个大工程中,迅速的定位执行速度慢的语句.(定位慢查询)

首先我们了解mysql数据库的一些运行状态如何查询(比方想知道当前mysql运行的时间/一共执行了多少次select/update/delete../当前连接)

showstatus

常用的:

showstatuslike‘uptime’;〔mysql数据库启动了多长时间〕

showstautslike‘com_select’showstautslike‘com_insert’...类推updatedelete〔显示数据库的查询,更新,添加,删除的次数〕

?show[session|global]statuslike....如果你不写[session|global]默认是session会话,指取出当前窗口的执行,如果你想看所有(从mysql启动到现在,那么应该global)

//显示到mysql数据库的连接数

showstatuslike‘connections’;

//显示慢查询次数

showstatuslike‘slow_queries’;

如何去定位慢查询

构建一个大表(400万)-?存储过程构建

默认情况下,mysql认为10秒才是一个慢查询.

修改mysql的慢查询.

showvariableslike‘long_query_time’;//可以显示当前慢查询时间〔默认当前的session的慢查询时间〕

mysqlshowglobalvariableslikelong_query_time;

+-----------------+-----------+

|Variable_name|Value|

+-----------------+-----------+

|long_query_time|10.000000|〔但是重启mysql之后,long_query_time依然是my.ini中的值〕

setlong_query_time=1;//可以修改慢查询时间

构建大表-大表中记录有要求,记录是不同才有用,否那么测试效果和真实的相差大.

创立:

CREATETABLEdept(/*部门表*/

deptnoMEDIUMINTUNSIGNEDNOTNULLDEFAULT0,/*编号*/

dnameVARCHAR(20)NOTNULLDEFAULT,/*名称*/

locVARCHAR(13)NOTNULLDEFAULT/*地点*/

)ENGINE=MyISAMDEFAULTCHARSET=utf8;

CREATETABLEemp

(empnoMEDIUM

文档评论(0)

寒傲似冰 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8071104010000026

1亿VIP精品文档

相关文档