MySQL设计规范与性能优化

发表于:2015-7-16 10:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:冰轮封雪    来源:51Testing软件测试网采编

  引言
  MySQL是目前使用最为广泛的关系型数据库之一,如果使用得当,可支撑企业级高并发、高可靠服务,使用不当甚至连并发量略高的个人网站都难以支撑;
  就算使用了缓存,大量的数据库访问依旧在所难免,即使设置了较长的缓存有效期,而且缓存命中率较理想,但缓存的创建和过期后的重建都是需要访问数据库的;
  本文主要从MySQL表结构设计规范和MySQL自身性能优化两方面来讨论该如何对MySQL数据库进行优化;
  MySQL表结构设计规范
  1. 数据库设计命名规范
  (1)数据库,数据表一律使用前缀,前缀名称一般不超过5字;
  # 正式数据库名使用小写英文以及下划线组成,尽量说明是哪个应用或者系统在使用的;
  mcs_webim
  ops_portal
  # 备份数据库名使用正式库名加上备份时间组成;
  ops_portal_20150621
  mcs_webim_20150622
  # 相关应用的数据表使用同一前缀,前缀名称一般不超过5字;
  webim_user
  webim_group
  # 备份数据表名使用正式表名加上备份时间组成;
  webim_user_20150620
  webim_group_20150620
  (2)字段名称使用单词组合完成,首字母小写,后面单词的首字母大写(驼峰式),最好是带表名前缀;
  # 如表webim_user的字段
  userId
  userName
  userPassword
  # 表与表之间的相关联字段要用统一名称;
  # 用尽量少的存储空间来存储一个字段的数据;
  2. 数据库规范化设计
  (1)范式化设计
  实际关系模式设计中,一般遵循第三范式——在一个数据表中,非主键字段之间不能存在依赖关系;
  具体可参考:规范化—数据库设计原则
  (2)反范式化设计
  举例:在页面显示我的好友列表;
  1.遵循第三范式
  (用户ID, 好友ID)
  (用户ID, 用户昵称, 用户邮箱, 注册时间, 联系电话)
  2.反范式化设计
  (用户ID, 好友ID, 好友昵称)
  (用户ID, 用户昵称, 用户邮箱, 注册时间, 联系电话)
  反范式化问题:
  1. 数据冗余;
  2. 更新导致数据不一致问题,可通过定期同步的手段来修改不一致数据;
  反范式化优势:
  减少读取数据的开销,这点非常重要,需要根据不同场景来适当使用反范式化设计;
  MySQL自身性能优化
  MySQL自身优化主要从如下几方面来介绍:
  1. Query语句优化;
  2. 慢查询优化;
  3. MySQL锁机制分析优化;
  4. 参数配置优化;
  Query语句优化
  1. MySQL状态报告
  show status;
  show engine innodb status;
  一些更加友好的第三方工具:mysqlreport(下载地址),mysqltunner,mytop等,可展示更加友好的状态报告;
  2. 正确使用索引
  如果索引使用不当,其他任何优化将毫无意义;
  索引目的
  索引类似于书的目录,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,加快查询速度;
  索引类型
  索引分单列索引和组合索引,组合索引的一个索引包含多列;
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号