首页 > 数据库开发 > 为什么会觉的MySQL数据库跑得比较慢呢?

为什么会觉的MySQL数据库跑得比较慢呢?

为什么会觉的MySQL数据库跑得比较慢呢?硬件太老?数据库设计不好?程序写的太烂?

1、先说mysql对CPU的利用特点,单核原因吗?这又得提到mysql的几个版本,5.1 可以利用4个核 5.5可以用到24个核 5.6可以用到64个核。因为mysql的连接一个是一个线程(非thread pool) 并且每个query 只能使用一个核,所以你用复杂查询慢查询时 看你的cpu占用 会发现 某个爆表。Oracle里面可以用并行查询(多个CPU核一起跑一个SQL),并行度,这类功能在MySQL里是不存在的。所以你用MySQL去跑一个5,6个大表的JOIN查询,你觉得性能会好吗?

2、mysql无执行计划缓存,通俗点 就是无sql执行计划预编译, 而oracle就有, oracle有个共享池 专门放这玩意。

3、MySQL随着连接数上升会出现性能下降, 这个也是MySQL的一个硬伤,但是随着MySQL的版本演进,还是出现了很多解决方法。比如,官方推出的thread pool(线程池),简称TP。TP就是为了解决并发连接数过高导致MySQL性能下降的问题,不过这属于MySQL额外的组件,官方的TP是需要额外花钱购买的。

4、现在来看下MySQL对内存的利用特点: 64位操作系统的服务器可利用内存((2^64-1)/1024/1024/1024)G, 在高速并发环境,基本是靠内存缓存来减少对磁盘的IO冲击,MySQL的InnoDB存储引擎 有一个内存组件:innodb_buffer_pool , 通常MySQL内存按实际数据的15%-20%规划,如果特别热的数据,需要考虑更大的比例来缓存数据,这15%-20%的数据我们通常又叫做热数据,比如你评估出你这台MySQL数据总量大概在500G左右,那MySQL要给到的内存可能就是75G(500*0.15), 那你可能需要一台128G左右内存的服务器。同时,innodb_buffer_pool_size的最大值 ,不应该超过服务器内存的70%,控制在服务器内存的50%-60%是最佳的。

5、 MySQL高可用架构及对比 。MySQL高可用架构最基本的就是基于MySQL的主从复制同步架构, MySQL同步 = MySQL-Master-Slave架构 = MySQL复制。 任何业务线上环境(不管数据量的大小)使用MySQL备库,做好HA同步架构,都是必须的,注意是必须的。 基于mysql同步构建,利用vip切换做故障转换。对gtid复制不支持,切换时间只做show slave status中判断(数据一致性并不高)


本文固定链接: http://www.devba.com/index.php/archives/6523.html | 开发吧

报歉!评论已关闭.