Mysql性能优化之逐级优化,开发人员必备技巧( 二 )

  • 尽量不要使用Text、MediumText等text数据类型,可以考虑分表存储数据
  • 2、表的垂直拆分
    把一个很多列的表拆分为多个表,有效解决表宽度问题
    • 不常用的字段单独存放到一个表
    • 经常用的字段单独存放到一个表
    • 把较大字段单独存放到一个表,比如产品的描述信息不建议放在产品主表
    三、系统配置优化mysql服务器是基于操作系统的,因此操作系统的配置也会影响到mysql数据系统,下面列出一些比较常见的系统配置项 。
    Mysql性能优化之逐级优化,开发人员必备技巧

    文章插图
    系统
    1、服务器网络方向,修改/etc/sysctl.conf文件
    • net.ip4.tcp_max_syn_backlog=65535 ——增加tcp支持的队列数
    • net.ip4.tcp_max_tw_buckets=10000
    • net.ip4.tcp_tw_reuse=1
    • net.ip4.tcp_tw_recycle=1
    • net.ip4.tcp_fin_timeout=10 ——上面这四项,断开连接时减少资源回收
    2、服务器打开文件限制数
    可以使用ulimit -a查看目录限制,修改/etc/security/limits.conf增加下面内容来修改打开文件数量的限制 。
    • soft nofile 65535 ——单个用户可用的最大进程数量(软限制)
    • hard nofile 65535 ——单个用户可用的最大进程数量(硬限制)
    3、mysql配置
    mysql配置文件一般位于/etc/my.conf或/etc/mysql.conf
    Mysql性能优化之逐级优化,开发人员必备技巧

    文章插图
    /etc/mysql/my.conf
    • innodb_buffer_pool_size ——配置innodb的缓冲池,如果只有Innodb引擎的表,建议设置为总内存的75%左右,如果还有myIsam表,那可以减小一点 。
    • innodb_buffer_pool_instances ——5.5后新增参数,设置缓冲池的个数,默认一个缓冲池
    • innodb_log_buffer_size ——innodb的log缓冲的大小,一遍设置小点即可
    • innodb_flush_log_at_trx_commit ——对innodb的I/O效率影响很大,默认1,可以设置【0,1,2】,建议设置2,如果对数据安全性要求很高设置默认1 。
    • innodb_read_io_threads ——读的I/O进程数,默认4,5.5可根据cpu核数及系统负载调整读的并发数
    • innodb_write_io_threads ——写的I/O进程数,默认4,5.5可根据cpu核数及系统负载调整写的并发数
    • innodb_file_per_table ——控制每个表使用独立的空间,默认off,建议设置on,增加并发的读写效率
    四、硬件的优化
    Mysql性能优化之逐级优化,开发人员必备技巧

    文章插图
    cpu
    mysql的一些工作只能使用到单核cpu,所以cpu核数并不是越多越好,5.5建议服务器不要超过32核;对于硬件的优化,平时涉及到的不多,也不在开发人员的优化范围之内,所以大家有兴趣可以自己去搜集资料学习 。
    好了,今天的分享就到这里了,如果喜欢我的内容,欢迎转发~~收藏~~
    谢谢!

    【Mysql性能优化之逐级优化,开发人员必备技巧】


    推荐阅读