数据库调研教程.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数据库优化 1.1 配置文件 1.1.1缓存索引和缓冲池 innodb_buffer_pool_size=2G innodb_buffer_pool_instances=1 pool-size可以缓存索引和行数据,对Innodb表来说非常重要,值越大,IO读写就越少,如果单纯的做 HYPERLINK /database/ \t /database/201501/_blank 数据库服务,该参数可以设置到电脑物理内存的80% pool_instances可以开启多个内存缓冲池,参数非常影响测试结果,特别是非常高的IO负载时,innodb_buffer_pool_instances=8,当pool_size很小时,效率差别很大,而当pool_size较大时,innodb_buffer_pool_instances=1表现最出色。 1.1.2闲置连接时间 wait_timeout参数值。 interactive_timeout 参数值。 当某个mysql的连接闲置时间超过一定时间将会被强行关闭,默认是8小时,由于连接请求空闲时却白白占用内存资源,建议将闲置连接时间尽量减少。 Mysql根据客户端类型的不同,来根据wait_timeout或interactive_timeout的值来强行关闭,所以两个参数需配合使用,单独设置无效。 1.1.3最大连接数、堆栈大小 max_connections参数值(默认151) back_log参数值(默认50) 堆栈大小即连接数超过max_connections值时,新的请求将被放在堆栈中,等待某一连接释放资源,当等待连接数超过back_log时,将不被授予连接资源。 如果项目支持外部菜单,建议适当调整最大连接数和堆栈大小。 1.1.4缓存的最大线程数 thread_cache_size参数值 在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建和销毁,线程创建的开销会变大,查询效率也会下降。 1.2索引 1.2.1复合索引 直接拿官方文档解释: 假设索引建立在 (last_name, first_name) 上, 那么 SELECT * FROM test WHERE last_name=Widenius; SELECT * FROM test WHERE last_name=Widenius AND first_name=Michael; SELECT * FROM test WHERE last_name=Widenius AND (first_name=Michael OR first_name=Monty); SELECT * FROM test WHERE last_name=Widenius AND first_name =M AND first_name N; 以上几种情况都是可以用这个多列索引来加速查询。 以下是查询规则: 总结:联系实际情况,对于大数据量的历史数据表来说,查询条件应为where meterId and planTime;建立复合索引meterId、planTime对于and条件的查询有很大提升。 1.2.2聚集索引 聚集索引不是一种单独的索引类型,而是一种存储数据方式。当前,SolidDB和InnoDB是唯一支持聚集索引的存储引擎。InnoDB按照主键进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。 对于我们的历史数据表来说,没有任何表的外键去引用历史数据表的id作为约束,所以历史表中的id字段我认为是无意义的,主键的聚集索引应该用在planTime字段上,因此planTime字段应有唯一约束。结合公司的历史数据表,对时间字段的唯一约束做了调查,见下图: mysql5.6.4以后的版本,支持定义time(3)或者timestamp(6)这样的字段,然后使用current_timestamp(6)即可为该字段赋值带有毫秒或微秒值的时间数据。 上图的时间数据精确到微秒,微秒级别的唯一性足以应付业务上的需要。在测试中,该字段设置为主键,所以不给该字段赋值时,会自动获取毫秒级别的系统当前时间。个人认为采集系统不用赋值也不会出现时间重复问题。 1.3 触发器 1.3.1触发添加 插入实时数据时,通过触发器自动复制改条数据到历史数据表。 测试如下: 1.创建触发器:增加person表记录后自动将记录增加到person1表中 2.添加一条数据到person表中,结果如下: 1.3.2触发删除 删除角色时,通过触发器自动删除用户与角色的关系。 测试如下: 创建触发器:删除person表记

文档评论(0)

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

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

1亿VIP精品文档

相关文档