您的位置 首页 php

[面试题]千万级mysql数据的表 如何加索引?

[面试题]千万级数据的表 如何加索引?

情况 是否停机什么的没有题。这题不追问 回答简单。追问的话 坑比较多 – eli

1、简单的方案就是创建个中间表, 给中间表加 索引 , 然后同步两张表, 不用停机 – 我不叫大脸猫

2、你中间表数据同步后呢 – eli

3、切换到中间表, 干掉原来的表喽,数据双写, 我其实只是把库变了一下而已, 数据是一致的 – 我不叫大脸猫

4、rename不靠谱 – eli

5、关键是不停机哦, rename的时候数据就丢了 – 我不叫大脸猫

6、肯定也确保老库没有流量了,你才能切,切库切表都一样 – yangmls

7、rename肯定是要停表的,我双写, 然后停了老库的写就好了啊, 然后切新库么 – 我不叫大脸猫

8、肯定得停一会的,哪怕是一秒,或者直接无视正在跑的事务,强行让他们出错,切到新库 – yangmls

9、为啥要停, 我比较好奇 – 我不叫大脸猫

10、你老库还有事务在跑,数据还没落地,你咋办,然后这个时候还有不断新的请求进来,事务永远跑不完了 – yangmls

11、加一主 同步 老库停 再主主同步 – eli

12、继续跑啊, 我不停他啊,双写啊,然后改单写, 只写新库, 老库就让他安静的把事务跑完喽 – 我不叫大脸猫

13、不停 你咋加索引? 卡死啊 – eli

14、双写坑更多 – yangmls

15、新库已经加好索引了啊 – 我不叫大脸猫

16、等会数据错乱了都订正不回来,索引这个倒是无所谓,我以为是说改结构的情况 – yangmls

17、我们说的就是加索引….改结构上次你说了你们的方案, 我肯定是木有意见的,而且不停机强行给千万级表加索引我们也不是没干过, 反正流量也不大, 阻塞就阻塞喽,这个问题要是问在高并发情况下给千万级表加索引, 不停机, 要如何操作, 就能显得高大上一点儿了 – 我不叫大脸猫

18、流量大 事物多。怕的不是慢 怕的是直接服务卡死了 – eli

19、并发不高, 加索引慢就慢喽, 又死不了人 – 我不叫大脸猫

20、所以这题出的并不好, 不考虑场景, 上来就问千万级表咋加索引, 就是为了吓唬小朋友 – 我不叫大脸猫

21、我只能说3个问题。数据库类型、流量高峰、机器负载。面试官想看你的敏感度和警觉性。还有对业务把控,还有 降级方案是否有。不是所有都走db,而且高并发的情况下双写不如加机器。我招人来是解决问题的 ,不是来制造麻烦的 ,如果你连业务都没了解。所有情况不明确,就动手。那样很容易出现坑的。一定要搞明白业务场景。信息不足就多问,要不锅谁背,还有。别总强调语言,工具而已。 我相信在做各位学习一门语言一月足以,无论c java。都一样。 难得是各种框架 生态。所以不要盲目去追求。觉得c牛逼。。java好。。 任何领域都能出专家。。 没必要浪费自己的才华去学习对自己不好的事。还好。我觉得人精力太过分散对自己不好 – 金灶沐

22、感觉考试和实践不一样 – templater

23、而且加索引跟加机器有啥关联? – 我不叫大脸猫

24、聚集索引 非聚集索引不一样,我都说了 看类型 看流量高峰,如果因为顶不住架机器 – 金灶沐

25、行锁/表锁, 事务/非事务, 还有就是索引类型么 – 我不叫大脸猫

26、等流量低峰or晚上就ok – 金灶沐

27、那如果流量高峰就要加索引呢 – 我不叫大脸猫

28、如果高峰 索引也解决不了大问题。 多加几个机器而已。索引是业务要求? – 金灶沐

29、不加可能就抗不到低峰就挂了呢 – 我不叫大脸猫

30、这是最搞的事,索引真的就能快吗? – 金灶沐

31、不能等到低峰再加, 你说你怎么办 – 我不叫大脸猫

32、你要看sql。。 看数据量。 索引页是tree 只不过快一些。 – 金灶沐

33、加索引会不会快那就是另一个问题了哦,看SQL发现没索引, 导致慢喽 ,我是以面试官的角度问的这些问题哦 ,@eli 上次面你的人是不是也是这样面你的一个问题接一个问题,所以我说问这种题有点儿扯淡, 如果纯粹是考察思路, 而不是真的要加索引, 那还好 – 我不叫大脸猫

34、如果硬做 可以做,但不是数据库层面了。 – 金灶沐

35、场景太多, 要考虑的问题太多, 全都要考虑进去, 就可以不用加了,那么硬做如何做呢 ? – 我不叫大脸猫

36、做readlock+降级(友好数据,借助工具缓存uri数据),流量在程序层拦截 – 金灶沐

37、就是没人访问 几千万数据 硬加一个索引也需要很长时间 – 王江华

38、只要只需要1-2分钟就ok。。 不过这需要架构非常牛逼。1分多钟吧。我记得,1千万tree到内存也没多大。 – 金灶沐

39、有时候不止吧 – 王江华

40、主要看索引的类型。。长短 – 金灶沐

41、@我不叫大脸猫  是这么问, 不过问的问题 没你这么极端….. 人家问问题没那么 … 没羞没臊… 主要还是当时的我太菜 – eli

42、还是建议用工具吧,percona的工具,percona的工具异常强大 – 王江华

43、好不容易逮着金爷了, 不问些极端问题怎么能成长呢,毕竟我们也没什么机会接触阿里那种流量规模的项目 – 我不叫大脸猫

44、不是花钱请大公司dba接个私活就解决了么?

45、人家唯品会已经是大公司了好吗 – 我不叫大脸猫

46、也是,那就是一顿饭的事情了嘛

47、 mysql 千万级大表在线加索引,是不是先复制结构出来。加上索引。然后把数据导过来。。 – Ado

48、MySQL应该就是这么干的,MySQL是先复制一个临时表 之后加索引, 把原来的表删掉 把临时表改名成 加索引的表名 ,是吧? – smarteng

第二个 好像是php array是如何实现的 描述下结构。

暂未讨论,期待大牛科普,哈哈

【其他问答】

请教下。。PHP, JAVA这种都只能单继承,C++可以多继承。这种牵扯底层的什么东西么,比如PHP现在搞了个trait,来解决单继承问题。。。 – tywei

多重继承 子类指针和第一个继承的父类指针地址相同 – viktor

单继承就是那么设计的,是怕乱 – 荒野猎人

@viktor 多重继承子类指针和第一个继承的父类指针地址相同,这局如何理解? – 金灶沐

指针数组? 每个单元是 类类型 ?这么理解对否?要么就是 多个类申请内存是连续的 ? – eli

不对 – 金灶沐

找到文章 在看了,挺有意思的 – eli

这话说的有问题。。看内存模型吧, – 金灶沐

内存分配到一起 ,指针偏移。 我之前说的第二种就这意思。 刚看了文章 确认了! – eli

【每日一笑】

北大考研试题:牙疼、萝卜烂地里、女友怀孕,三者的共同点是什么?

考生A答:坏(怀)了。

导师批:可读研;

考生B答:都是虫子惹的祸。

导师批:可读博;

考生C答:拔晚了。

导师批:可到清华当教授

【经典语录】

10年的海量服务开发运营经验和教训使得我们深刻的认识到:

要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量信息丢失,最后积重难返、痛苦不堪。

没有框架来规范,团队的随意性就太大,合作效率就大打折扣,甚至于内耗、反复的挖坑填坑,系统的成败过于依靠人的意识和水平。

规范,不能靠文档、不能靠劳动纪律、不能靠苦口婆心、不能靠人员意识、不能靠运动式的整顿,要靠技术框架上切实的限制与贴心保护

1,一个入口一出口要牢记,比方说接request,打log,撸db,搞cache,返回response等就必须统一在一个类或一个函数里;别人的db,cache不能随便撸,必须走对应负责人提供的接口,这是底线,没得商量

2,对重要问题要死磕,磕出简单的解决方法,别瞎整

– 种树人

文章来源:黑夜路人技术讨论群

如有疑问或异议,请加群讨论

加群请关注微信公众号:“黑夜路人技术” ,回复“加群”

文章来源:智云一二三科技

文章标题:[面试题]千万级mysql数据的表 如何加索引?

文章地址:https://www.zhihuclub.com/151618.shtml

关于作者: 智云科技

热门文章

网站地图