MySQL性能优化培训文档.docxVIP

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

MySQL性能优化培训文档数据库设计表结构设计优化基本原则:使数据量最小,性能的瓶颈在于磁盘性能,数据量越小,磁盘读取数据的速度就越快,同时,在较小的列上建立索引,索引文件占用的资源也会更少。尽可能地使用最有效(最小)的数据类型。MySQL有很多节省磁盘空间和内存的专业化类型。尽可能使用较小的整数类型使表更小。例如,MEDIUMINT经常比INT好一些,因为MEDIUMINT列使用的空间要少25%。如果可能,声明列为NOT NULL。它使任何事情更快而且每列可以节省一位。注意如果在应用程序中确实需要NULL,应该毫无疑问使用它,只是避免 默认地在所有列上有它。只创建你确实需要的索引。索引对检索有好处,但是当你需要快速存储东西时就变得糟糕。如果主要通过搜索列的组合来存取一个表,对它们做一个索引。第一个索引部分应该是最常用的列。如果从表中选择时总是使用许多列,应该首先以更多的副本使用列以获得更好的索引压缩。垂直拆分:保证经常查询、显示的主要字段在一张表中,其他的信息放在明细表中。此类优化更利于常用字段频繁查询时,提高系统性能。例如教师信息表,经常用到的字段非常有限,每次查询浪费大量的内存资源加载不使用的信息,对性能造成一定影响。水平拆分:当表中数据量非常大时,可以根据具体的业务情况,按照某个字段进行分类,存储在不同的表甚至是数据库中,使得某个表或库的数据量在一个比较小的范围内,一次来提高查询性能。一个简易论坛的数据库设计例子:方案1两个表:tb_user,tb_messagetb_user字段名数据类型描述user_idInt用户IDUser_login_nameVarchar(128)用户登录名User_nick_nameVarchar(128)用户昵称User_login_pwdVarchar(128)用户登陆密码User_create_dateDatetime用户创建日期User_birthdayDate用户出生日期User_descriptionVarchar(2000)用户描述tb_message字段名数据类型描述Msg_idInt帖子IDMsg_subjectVarchar(128)帖子主题Msg_user_idInt发帖人IDMsg_create_dateDatetime发帖时间Msg_contentText帖子内容方案2四个表:tb_user,tb_user_deatil,tb_message,tb_message_contenttb_user字段名数据类型描述user_idInt用户IDUser_login_nameVarchar(128)用户登录名User_login_pwdVarchar(128)用户登陆密码User_create_dateDatetime用户创建日期Tb_user_detail字段名数据类型描述user_idInt用户ID,与User表一一对应User_birthdayDate用户出生日期User_descriptionVarchar(2000)用户描述tb_message字段名数据类型描述Msg_idInt帖子IDMsg_subjectVarchar(128)帖子主题Msg_user_idInt发帖人IDMsg_user_login_nameVarchar(128)发帖人用户名Msg_create_dateDatetime发帖时间tb_message_content字段名数据类型描述Msg_idInt帖子ID(与message表一一对应)Msg_contentText帖子内容方案二对方案一做了两个主要变动:第一:对两个表进行了垂直拆分,将不常用的以及大字段内容拆分到了另外一张表中,这样做的好处是,在频繁的帖子列表检索、用户常用操作过程中,减少数据库IO压力,以便提高性能。第二:tb_message表增加冗余字段login_name,为的是在频繁的帖子列表展现过程中,不再关联user表去读取用户名称字段,并且一般论坛,用户的登录名也是不允许改变的。存储引擎的选择数据存储量的大小,是否需要事物、外键支持,表的常用操作形式是选择数据库存储引擎的关键因素。MyISAM:管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。InnoDB:提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。?各自的一些特点MyISAM是早期ISAM(Indexed Sequential Access Method,我现在用的MySQL5.0已经不支持ISAM了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率这样一

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档