口试官:你好,请先做个自我介绍(内心独白:精神小伙看我不整去世你)
求职甲:我毕业于xx大学,善于巴拉巴拉一大堆......
口试官:事情经历挺丰富呀,一贯都是骨干角色;说说你最近的项目,你承担什么职能

求职甲:最近的一个项目紧张给长城贴瓷砖,我紧张卖力搬砖......哈哈
口试官:真能瞎白活,来问你个技能;有这样的需求mysql日增长50000,须要支持6-6年的业务增长,你怎么设计
求职甲:额,啊,MySQL!
日增长50000?
口试官:是的
求职甲:首先mysql字段长度要小,增加索引,分库分表。啊,就这些
口试官:啊,嗯?本日就到这吧,回去等关照
求职甲灰溜溜离开。
如果是你这个问题怎么回答呢
剖析日增长50000条,按照每条数据1kb打算,每天是50M(实际48.83m,整数方便打算),一年50365 = 18250m, 50000365 = 18250000条;5-6年的业务增长182506 = 109500m, 182500006 = 109500000条。
按照mysql查询性能,以及规约,须要进行分库分表以缓解单库单表压力。
引申问题:1、索引设计
2、如何进行分库分表,垂直切分还是水平切分
3、分库分表的分布式id设计
4、性能与扩展
5、掩护监控
6、安全与权限限定
设计数据库设计表构造优化:合理设计表构造,避免冗余字段,利用得当的索引类型,如B-tree、哈希索引等,以加速查询。数据类型选择:利用最紧凑的数据类型存储信息,例如,对付日期可以利用DATE或TIMESTAMP类型,对付整数可以利用TINYINT或SMALLINT等。分区策略:利用表分区来提高读写性能,可以按日期、范围或列表进行分区。这样可以将数据分散到多个物理磁盘上,减少单个分区的查询包袱。性能与扩展性读写分离:设置主从复制,将读取操作分担到从做事器上,减轻主理事器的压力。缓存策略:利用如Redis或Memcached等缓存技能来缓存频繁访问的数据,减少对数据库的直接访问。负载均衡:利用负载均衡器来分发读写要求,确保数据要求均匀分配到多个数据库实例上。硬件与资源方案:确保做事器配置足够强大,包括足够的RAM、高速磁盘(如SSD)、多核CPU和充足的网络带宽。掩护与监控定期掩护:定期进行数据库的掩护,如优化索引、剖析表、删除旧数据等。备份与规复操持:履行定期的数据备份策略,以及快速规复的操持。监控与报警:设置数据库性能监控,包括CPU利用率、磁盘空间、I/O等待等,以便及时创造并办理问题。安全性数据加密:敏感数据应进行加密存储。访问掌握:利用严格的权限管理,限定对数据库的访问。可伸缩性与灵巧性云做事考虑:考虑利用云数据库做事,如AWS RDS、Google Cloud SQL或Azure Database for MySQL,它们供应了自动扩展和高可用性的特性。微做事架构:如果适用,可以采取微做事架构,将业务逻辑分解成多个做事,每个做事都可以单独扩展其数据库。