美文网首页
数据库优化

数据库优化

作者: 秦汉邮侠 | 来源:发表于2016-08-02 21:58 被阅读43次

    总体思路

    • 客户端(1):优化客户端的应用,做Sql优化,看看是否有不必要的压力给了数据库(应用优化),难度指数低,改进效果不明显
    • 服务端(2):读写分离,难度指数低,改进效果不明显
    • 服务端(3):看看有没有其他办法可以降低对数据库的压力,例如引入缓存、加搜索引擎等,难度指数中等,改进效果明显,10G-100GB的 数据,完全无压力
    • 服务端(4):把数据库的数据和访问分到多台数据库上,分开支持,分为垂直分割和水平分割,难度指数大,改进效果明显,适合TB级的数据量

    方法3

    • 加入缓存或者搜索引擎
    • 缓存和队列:缓存是降低数据库读取量的出色技术。有许多应用使用这种技术可以降低数据库读负载高达80-95%。与之相对的是队列,它是用来优化写操作的。通过合并多次写操作,提高了对数据库操作的效率。大部分大型应用都应该重点考虑这两种技术。Memcached和Redis是MySQL领域非常流行的两种缓存技术。对于队列,最流行的技术是ActiveMQ和RabbitMQ,以及较新的kafka
    • 外部支持技术:MySQL在很多方面都很出色,但也不是所有方面都强。如果你需要高性能全文检索,应该考虑ElasticSearch、Sphinx或者Lucene。如果你想做大规模数据分析,可以考虑基于Hadoop的基础架构或者Vertica也是不错的选择。你应该让MySQL处理它擅长的事,把其它事留给外部支持工具来做

    方法4

    • 垂直分割和水平分割
    • 垂直分割:把一个数据库中不同业务单元的数据分到不同的数据库里面
    • 水平分割:根据一定的规则把同一业务单元的数据拆分到多个数据库中
    • 垂直分割和水平分割的理解
    • 分片不是万能药,使用分片的场景
    • 对垂直分割和水平分割都有的影响:
    • 单机的ACID保证被打破了
    • Join操作被影响
    • 依靠外键去进行约束的场景会有影响
    • 另外对于水平分割的影响:
    • 依靠单库的自增序列生成唯一ID 会受影响
    • 针对单个逻辑意义上的表的查询要跨库

    相关文章

      网友评论

          本文标题:数据库优化

          本文链接:https://www.haomeiwen.com/subject/yatslttx.html