一、项目的架构设计方面:
 1、分库分表,分库,按照业务模块分离,分表,可以按照日期,甚至按照业务字段拆分表都算作是分表,横向与纵向而已;具体的分表的方式方法也有很多,比如mycat当然mycat已经过期,dble是其升级版不过是针对mysql但是更强更方便;这种对业务没有侵入性;还有比较流行的shardingjdbc,完全可以封装一个工具包,项目中引用开发,只需定义好分片规则,缺点是对代码有一些侵入性。
 2、分离活跃数据,比如任务,有进行中有已完成,如果对未完成的操作比较频繁,又或者按日期分离,只保留本周的,具体看应用场景
 二、代码开发方面:
 1、缓存,但是得注意数据库跟缓存的一致性问题,具体可以参考:
 2、使用存储过程,将一次请求多次访问数据库操作的业务放在存储过程中,这样可以一次访问多次操作
 3、队列批量处理,比如使用ArrayBlockingQueue可以实现队列的批量操作,逻辑:每次数据来了放入队列,启动一个消费线程,从队列中一次性拉取所有,使用batch操作,同样可以减少对数据库的并发。
 4、索引,这个基本就不用细说了,具体很多细节
 三、数据库本身方面:
 1、数据库集群,比如读写分离,很常见
 四、数据库具体设计
 1、对查询优化,尽量避免全表扫描,考虑在常用字段上建索引where以及order by
 2、避免where字句中使用null判断而引起的放弃索引,比如不设置null而设置0或者“”
 3、不是所有索引一定生效,当命中太多也许会失效
 4、索引不是越多越好,影响插入更新效率,一般不要超过6个
 5、避免更新索引字段,导致索引更新,效率降低很多
 6、使用varchar替换char
 五、sql语句方面
 1、避免where子句中使用!= <> 等索引失效
 2、in 与 not in慎用,效率很低,几十个还可以,不要过大,能用between 别用in
 3、避免子句中使用or连接条件,导致索引失效比如 select id from t where num= 0 or num = 1 可以select id from t where num= 0 union  select id from t where num = 1
 4、like %abc% 会不走索引,abc%没事
 
  
mysql 高并发 触发器 mysql高并发解决
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。 
             
            
        
                提问和评论都可以,用心的回复会被更多人看到
                评论
            
            
                    发布评论
                
            
            相关文章
        
        
- 
                    WPF依赖属性和附加属性简要讲解了附加属性和依赖属性 wpf Click xml 控件
- 
                    Spring Bean 生命周期详解:初始化与销毁方式对比与实践各种方式的优缺点,展示了完整的执行顺序,并给出了实际开发中的典型应用场景。建 spring python java 初始化 System
 
 
                    













 
                    

 
                 
                    