一、udp和tcp有什么区别?
1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接,即发送数据之前不需要建立连接。
2.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3.UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5.TCP对系统资源要求较多,UDP对系统资源要求较少。
二、mysql有多少种索引?索引的优点和缺点
1.索引简介
索引是帮助MySQL高效获取数据的数据结构。
在MySql中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。
2.索引的优点
A.提高数据检索效率,降低数据库的IO成本。B.通过索引对数据进行排序,降低数据排序的成本降低了CPU的消耗。C.大大加快数据的查询数据。
3.索引的缺点
A.创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
B.索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值。
C.当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。
4.索引的分类
1)单列索引
单列索引只包含单个列,但一个表中可以有多个单列索引。
2)普通索引
普通索引允许在定义索引的列中插入重复值和空值。
3)唯一索引
索引列中的值必须是唯一的,但是允许为空值。
4)主键索引
主键索引是一种特殊的唯一索引,不允许有空值。
5)复合索引
在表中的多个字段组合上创建的索引,只有在查询条件中使用了组合的多个字段的左边字段时,索引才会被使用,使用复合索引时遵循最左前缀集合。
6)全文索引
全文索引,只有MyISAM存储引擎支持,只能在CHAR、VARCHAR、TEXT类型字段上使用全文索引。
全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。在数据量较大时候,先将数据放入一个没有全文索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。
7)空间索引
空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种:GEOMETRY、POINT、LINESTRING、POLYGON。
在创建空间索引时,使用SPATIAL关键字。
空间索引必须使用MyISAM存储引擎,并且空间索引的字段必须为非空。
三、 主键、外键和索引的区别
主键
定义:唯一标识一条记录,不能有重复的,不允许为空。
作用:用来保证数据完整性。
个数:主键只能有一个。
外键
定义:表的外键是另一表的主键,外键可以有重复的可以是空值。
作用:用来和其它表建立联系用的。
个数:一个表可以有多个外键。
索引
定义:该字段没有重复值,但可以有一个空值。
作用:是提高查询排序的速度。
个数:一个表可以有多个唯一索引。
如果有对软件测试感兴趣的小伙伴可以加群了解更多:点击进群