
数据库设计
文章平均质量分 74
梁萌
认真是一种态度
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用倒排索引法解决分库分表后查询问题
假如现在要查询用户表的数据,已知的是用户邮箱或者手机号码,那么key存储的是用户邮箱或者手机号。value存储的事用户表ID和数据所在服务器的编号。该条用户信息的用户ID是9,数据存储在1号服务器上。数据进行了分库分表后,要查询某一条数据的信息,事先是不清楚该条数据在哪台服务器上的,这时候可以使用倒排索引法,将数据的关键信息存储到Redis中,然后从Redis中获取到数据所在的服务器和数据ID。1.多一次查询(需要先从Redis中获取到ID和所在服务器),性能有所下降。原创 2024-12-05 23:00:22 · 230 阅读 · 0 评论 -
MySQL什么时候分库分表 又有哪些新问题?
比如要查询ID=100的数据,直接找到存储了100这条记录的表进行查询,不需要找所有表的记录,可以有效缩小磁盘扫描范围。例如将id在1亿到2亿的数据放在一个数据库中,id在2亿到3亿的数据放在一个数据库中,id在3亿到4亿的数据放在一个数据库中。最后一个库中的数据访问概率会比其他表高,因为最后一张库一般存储的是最新产生的数据,访问概率高就会导致最后一个库的处理压力最大。无法预估服务器数据承载量,当前计划每个数据库存储1亿数据,实际可能单台数据库能够存储1.5亿数据,那么就会造成资源的浪费。原创 2024-12-02 22:48:03 · 391 阅读 · 0 评论 -
为什么架构设计禁止IP直连?
IP直连指应用程序直接在代码中硬编码IP地址,比如,连接mysql数据库的数据库链接,如下的定义方式,就属于IP直连。这种写法在开发环境中很常见,但是,在正式生产环境中,如果也这样写,就会产生一些问题。假如202.99.138.21这台数据库服务器出现了问题,现在要紧急切换到202.99.183.22这台数据库服务器上,那就需要改代码,然后发布应用,才能实现数据库的切换。这在大型商城应用中是不可取的,会影响用户正常使用,改了代码就可能产生未知的风险。原创 2024-10-25 20:58:36 · 1080 阅读 · 0 评论 -
大厂为什么要禁止使用数据库自增主键
何为尾部热点,在使用范围分片的情况下,测试程序的生成主键是单调递增的,所以新写入的数据往往集中在一个 范围范围内,而范围又是数据调度的最小单位,只能存在于单节点,那么这时集群就退化成单机的写入性能,不能充分利用分布式读写的扩展优势了。如果单条数据量比较小,在分片1中实际可以容纳1.5亿数据,就无法再进行数据扩展了,因为数据是按照ID范围进行分片的,ID是固定死的,无法在运行期间,进行动态扩展。以时间为依据,结合机器ID及序列,生成的一个定长的数字,这个数字就可以作为主键。当数据量大时,代价是很大的。原创 2024-10-22 22:35:18 · 1363 阅读 · 0 评论 -
数据库表拆分:水平分表、垂直分表
管理数据的基本单位为page(页),默认大小16KB,作为mysql中保存page的基本单位称作Extent(区),一个区由连续的页组成,默认一个区有1M的存储空间,即一个区可以连续装载64个页。每一页中,根据数据的大小,可以存储多行数据。通过垂直分表的操作,查询SQL也会发生变化,如上图所示,拆表前,只需要查询单张表就可以完成,拆表后要进行表关联,来达到查询的目的。拆分后,在对商品基本信息表的扫描,只需要对39万页的内容进行扫描,与未拆分表的625万页相比,少了16倍,差距是非常大的。原创 2024-10-17 22:48:42 · 981 阅读 · 0 评论