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