mysql数据库高手进来,关于分库和分表的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库高手进来,关于分库和分表的问题相关的知识,希望对你有一定的参考价值。
我用mysql建了一个数据库"dba",这个库里有很多表。现在我还想建一张新表(表X),表X跟dba里面已有的表没有任何关联,比如说没有外键来关联。访问dba库里面的表的用户,是不会访问表X的,那么问题就来了,我是在mysql里新建一个库,在新库下面建这个表X呢,还是直接把表X建到dba库里面?
其实数据也不是很多,可以只建一个库,所有的表都放里面。但这样一来,访问的时候都是mysql_select_db ("dba"), 都要一起来选择这个dba这个库,我担心会对这个库造成很大的负担,因为并发量还是很高的。
所以我想能不能另外建一个库比如dbx,然后表X放到dbx下面,那么至少这部分用户是mysql_select_db("dbx"),就能大大减轻dba的请求量。——但这样一来会不会因为是分库访问,反而对数据库更不好?
不知道我说清楚了没有?一般一个库里有多少张表才需要另外新建库?是一个中小型网站,写的操作很少,主要以搜索为主,搜索量比较大。
补充:dba库里的表的总记录条数在5万以内。希望查询速度非常快,不受任何影响,所以才想要把无关的表都放到另外一个库里。
如果你纠结的话,建议你分库。
如果还有什么原因不想分库的话,你可以拿出一些性能数字来,我们才好给你更多的建议。
比如:你的内存,磁盘io,现在mysql的各项关键指标等。 参考技术B 另开新的数据库追问
为什么啊,能解释下么
追答无他,个人感觉,清晰一点,做嘢方便
MySQL性能篇:索引锁事务分库分表如何撑起亿级数据
最近项目增加,缺人手,面试不少,但匹配的人少的可怜。跟其他组的面试官聊,他也抱怨了一番,说候选人有点儿花拳绣腿,回答问题不落地,拿面试最常问的MySQL来说,并不只是懂“增删改查”、表关联就万事大吉了。
千万条数据,走索引还是慢,怎么解决?
千万级数据,分库分表怎么做?
主从延迟怎么解决?
这些关于实践以及底层的问题会是面试时区分你和竞争者的一个关键指标,同时也会对我们的实际工作产生真正价值。
我们服务于业务,问题的根源也在于业务量极大或者场景复杂,面对这样的状况,我们需要清楚解决的基本逻辑。
(MySQL逻辑架构)
拿MySQL优化来说,主要分4个方向:SQL语句跟索引、表结构、系统配置、硬件。总优化思路就是最大化利用索引、尽可能避免全表扫描、减少无效数据查询:
1、减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘 IO。
2、返回更少的数据:只返回需要的字段和数据分页处理,减少磁盘 IO 及网络 IO。
3、减少交互次数:批量 DML 操作,函数存储等减少数据连接次数。
4、减少服务器 CPU 开销:尽量减少数据库排序操作以及全表查询,减少 CPU 内存占用 。
5、分表分区:使用表分区,可以增加并行操作,更大限度利用 CPU 资源。
当然,掌握了这些基本原则,我们还是会面临一些难题。比如通过分表来解决大表问题,分表主键如何选择,分表后的跨表查询怎么解决?大事务会导致锁定太多的数据,造成大量的阻塞和超时,出现主从延迟,这要通过什么方式来改善?
MySQL确实是个庞杂的体系,掌握的越深入,我们能做的事情也就越多。
观察周围的大牛你就会发现,他们的关键特征之一,就是能解决别人解决不了的问题,一是懂,二是快,而我们首先要做的就是先在懂上吃透。
前段时间和玄姐(前58集团技术主席孙玄)聊,收获颇多。他谈到,以架构师的思路和视野学习 MySQL ,既能够夯实分库分表、分布式部署等核心技术点,又能够掌握普通开发者,难以触及的 MySQL 架构设计方法论。你在数据库层面,在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力。
以上是关于mysql数据库高手进来,关于分库和分表的问题的主要内容,如果未能解决你的问题,请参考以下文章