草庐IT

MySQL实战45讲 11

11|怎么给字符串字段加索引?Q:如何在邮箱这样的字段上建立合理的索引?用户表的定义:createtableSUser(IDbigintunsignedprimarykey,emailvarchar(64),...)engine=innodb;由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句:selectf1,f2fromSUserwhereemail='xxx';如果email这个字段上没有索引,那么这个语句就只能做全表扫描。A:前缀索引MySQL是支持前缀索引的,也就是说,可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。a

MySQL实战45讲 11

11|怎么给字符串字段加索引?Q:如何在邮箱这样的字段上建立合理的索引?用户表的定义:createtableSUser(IDbigintunsignedprimarykey,emailvarchar(64),...)engine=innodb;由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句:selectf1,f2fromSUserwhereemail='xxx';如果email这个字段上没有索引,那么这个语句就只能做全表扫描。A:前缀索引MySQL是支持前缀索引的,也就是说,可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。a

MySQL实战45讲 9

09|普通索引和唯一索引,应该怎么选择?每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:selectnamefromCUserwhereid_card='xxxxxxxyyyyyyzzzzz';由于身份证号字段比较大,不建议你把身份证号当做主键,那么现在有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。Q:从性能的角度考虑,选择唯一索引还是普通索引呢?选择的依据是什么呢?A:ans用k来表示上面的身份证号,假设字段k上的值都不重复。查询过程假设,执行查询的语句是selecti

MySQL实战45讲 9

09|普通索引和唯一索引,应该怎么选择?每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:selectnamefromCUserwhereid_card='xxxxxxxyyyyyyzzzzz';由于身份证号字段比较大,不建议你把身份证号当做主键,那么现在有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。Q:从性能的角度考虑,选择唯一索引还是普通索引呢?选择的依据是什么呢?A:ans用k来表示上面的身份证号,假设字段k上的值都不重复。查询过程假设,执行查询的语句是selecti

MySQL实战45讲 4,5

04|深入浅出索引(上)索引的出现其实就是为了提高数据查询的效率,就像书的目录一样索引的常见模型哈希表、有序数组和搜索树哈希表User2和User4根据身份证号算出来的值都是N,但没关系,后面还跟了一个链表。需要注意的是,图中四个ID_card_nhash出来的值并不是递增的,这样做的好处是增加新的User时速度会很快,只需要往后追加。但缺点是,因为不是有序的,所以哈希索引做区间查询的速度是很慢的,需要全部扫描一遍。所以,哈希表这种结构适用于只有等值查询的场景,比如Memcached及其他一些NoSQL引擎。有序数组有序数组在等值查询和范围查询场景中的性能就都非常优秀数组就是按照身份证号递增的

MySQL实战45讲 4,5

04|深入浅出索引(上)索引的出现其实就是为了提高数据查询的效率,就像书的目录一样索引的常见模型哈希表、有序数组和搜索树哈希表User2和User4根据身份证号算出来的值都是N,但没关系,后面还跟了一个链表。需要注意的是,图中四个ID_card_nhash出来的值并不是递增的,这样做的好处是增加新的User时速度会很快,只需要往后追加。但缺点是,因为不是有序的,所以哈希索引做区间查询的速度是很慢的,需要全部扫描一遍。所以,哈希表这种结构适用于只有等值查询的场景,比如Memcached及其他一些NoSQL引擎。有序数组有序数组在等值查询和范围查询场景中的性能就都非常优秀数组就是按照身份证号递增的

MySQL实战45讲 6,7,8

06|全局锁和表锁:给表加个字段怎么有这么多阻碍?Connection连接与Session会话通俗来讲,会话(Session)是通信双⽅从开始通信到通信结束期间的⼀个上下文(Context)。这个上下文是⼀段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户登录等信息。连接是物理上的客户端同服务器的通信链路根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁Flushtableswithreadlock(FTWRL)当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(

MySQL实战45讲 6,7,8

06|全局锁和表锁:给表加个字段怎么有这么多阻碍?Connection连接与Session会话通俗来讲,会话(Session)是通信双⽅从开始通信到通信结束期间的⼀个上下文(Context)。这个上下文是⼀段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户登录等信息。连接是物理上的客户端同服务器的通信链路根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁Flushtableswithreadlock(FTWRL)当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(

PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)

 最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。概述管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。MDIO的历史MDIO是ManagementDataInput/Output的缩写,有两根线,分别为双向的MDIO和单向的MDC,用于以太网设备中上层对物理层的管理。之所以能够管理这些PHY芯片,是因为能够对PHY芯片的各类

PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)

 最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。概述管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。MDIO的历史MDIO是ManagementDataInput/Output的缩写,有两根线,分别为双向的MDIO和单向的MDC,用于以太网设备中上层对物理层的管理。之所以能够管理这些PHY芯片,是因为能够对PHY芯片的各类