mysql优化的几个方面 如何优化Mysql千万级快速分页,limit优化快?

[更新]
·
·
分类:互联网
1706 阅读

mysql优化的几个方面

如何优化Mysql千万级快速分页,limit优化快?

如何优化Mysql千万级快速分页,limit优化快?

select * from collect where id in (9000,12,50,7000); 竟然 0秒便可以查完!id in (str) 很快,根基还是0秒。若是这样,千万级的数据,mysql应该也很轻易应付。

Linux上MySQL优化提升性能哪些可以优化的关闭NUMA特性?

Linux上MySQL优化提升性能,可以优化关闭NUMA特性如下:
这些其实都源于CPU最新的技术:节能模式。操作系统和CPU硬件配合,系统不繁忙的时候,为了节约电能和降低温度,它会将CPU降频。
为了保证MySQL能够充分利用CPU的资源,建议设置CPU为最大性能模式。这个设置可以在BIOS和操作系统中设置,当然,在BIOS中设置该选项更好,更彻底。
然后我们看看内存方面,我们有哪些可以优化的。
i) 我们先看看numa
非一致存储访问结构 (NUMA : Non-Uniform Memory Access) 也是最新的内存管理技术。它和对称多处理器结构 (SMP : Symmetric Multi-Processor) 是对应的。
我们可以直观的看到:SMP访问内存的都是代价都是一样的但是在NUMA架构下,本地内存的访问和非 本地内存的访问代价是不一样的。对应的根据这个特性,操作系统上,我们可以设置进程的内存分配方式。目前支持的方式包括:
--interleavenodes
--membindnodes
--cpunodebindnodes
--physcpubindcpus
--localalloc
--preferrednode
简而言之,就是说,你可以指定内存在本地分配,在某几个CPU节点分配或者轮询分配。除非 是设置为--interleavenodes轮询分配方式,即内存可以在任意NUMA节点上分配这种方式以外。其他的方式就算其他NUMA节点上还有内 存剩余,Linux也不会把剩余的内存分配给这个进程,而是采用SWAP的方式来获得内存。
所以最简单的方法,还是关闭掉这个特性。
关闭特性的方法,分别有:可以从BIOS,操作系统,启动进程时临时关闭这个特性。
a) 由于各种BIOS类型的区别,如何关闭NUMA千差万别,我们这里就不具体展示怎么设置了。
b) 在操作系统中关闭,可以直接在的kernel行最后添加numaoff,如下所示:
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root/dev/mapper/VolGroup-root rd_NO_LUKS.UTF-8 rd_LVM_LVVolGroup/root rd_NO_MD quiet SYSFONTlatarcyrheb-sun16 rhgb crashkernelauto rd_LVM_LVVolGroup/swap rhgb crashkernelauto quiet KEYBOARDTYPEpc KEYTABLEus rd_NO_DM numaoff
另外可以设置 _reclaim_mode0尽量回收内存。
c) 启动MySQL的时候,关闭NUMA特性:
numactl --interleaveall mysqld
当然,最好的方式是在BIOS中关闭。
ii) 我们再看看vm.swappiness。
vm.swappiness是操作系统控制物理内存交换出去的策略。它允许的值是一个百分比的值,最小为0,最大运行100,该值默认为60。vm.swappiness设置为0表示尽量少swap,100表示尽量将inactive的内存页交换出去。
具体的说:当内存基本用满的时候,系统会根据这个参数来判断是把内存中很少用到的inactive 内存交换出去,还是释放数据的cache。