ruby程序员快6年了,不知道Mysql中MyISAM、InnoDB两种表类型,是不是弱爆了?
如果6年了还分不清,是有一点弱。不过大公司都是分工很明确,一个萝卜一个坑。每天都是重复不停的敲代码。建议如果需要全面发展,可以去小公司,或者外包公司。短时间就必须完成一个项目,而且不停的接新项目,这样可以锻炼自己,还可以学习到更多的知识.
谢谢邀请。
这个要看个人情况而定了。
有的公司分工明确,写代码跟数据库设计是分开的,基本没有机会接触到自己工作之外的东西了。公司这样分工虽然工作效率提高了,但是不利于自己的发展,一般工作个两三年就可以跳槽了,不然每天做的都是重复的事。
去小的创作型公司练练对自己的技术提升帮助很大,也可以做一些管理上的工作😊。不要一辈子做技术,做基础开发累。
不要让未来的你,讨厌现在的自己。
MySQL数据库设计之innodb如何设计主键索引?
MySQL数据库分为两种存储引擎MyISAM引擎与InnoDB。其中最主要区别在于InnoDB是聚集索引而MyISAM是非聚集索引。想要知道如何设计lnnoDB主键索引,我们则需要先理解其索引是如何实现才能进行合理有效的设计。
InnoDB索引实现
InnoDB使用B+Tree作为索引结构,数据文件本身就是索引文件。在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。
上图是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录如子叶数据文件就可以理解为索引文件,15为key主键,这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
其次,InnoDB的辅助索引data域存储的是主键的值而不是地址。既InnoDB的所有辅助索引都引用主键作为data域。例如,下图子叶中辅助索引Alice的data存的是主键的值
所以当使用辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。
设计的思路
在InnoDB的索引实现后我们就可以根据其特性作出相应的设计了,如
- 不使用过长的字段作为主键,因为所有辅助索引都引用了主索引,过长的主索引会令辅助索引变得过大。
- 不使用非唯一的字段作为主键在InnoDB,因为InnoDB数据文件本身是一颗B+Tree,非唯一主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,使用自增字段作为主键则是一个不错的方式。
以上就是如何设计InnoDB主键索引的方式,思路是设计先要去理解其原理,在理解其原理之后根据其特性结合实际场景业务等即可以做出对应合理设计,希望我的回答对你有所帮助。