Session 和 Cookie 的区别
Session: Session 是用于唯一标志客户信息的对象,容器通过浏览器端传送的 cookie 中的 jsessionid 来区分不同的客户对象,所以 Session 依赖于 cookie。是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。
Cookie: cookie 是在服务器端创建,然后服务器发送到浏览器端,存储在浏览器边,当再次请求服务器时候,浏览器会将该域中的相关 cookie 发送到服务器端。是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现 Session 的一种方式。
区别
cookie 数据存储在客户端上, session 数据存储在服务器上。
cookie 数据由于存储在客户端上并不是十分安全,别人可以通过分析存放在本地的 cookie 进行 cookie 欺骗。因此考虑到安全问题应当使用 session。
session 会在一定时间上保存在服务器中。当访问增多时,会大量占用服务器的性能。如果为了考虑减少服务器的压力,应当使用 cookie。
单个 cookie 的保存数据大小不能超过 4k,很多浏览器限制一个站点最多保存 20 个 cookie。
因此,可以考虑将登陆等重要的信息保存在 session 中,其他相对不中要的数据可以存储在 cookie 中。
参考链接:
MySQL 索引类型
MySQL 主要有以下几种索引类型: 普通索引,唯一索引,主键索引,组合索引,全文索引。
创建索引的语句如下:
unique|fulltext 为可选参数,分别表示唯一索引、全文索引
index 和 key 为同义词,两者作用相同,用来指定创建索引
col_name 为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
index_name 指定索引的名称,为可选参数,如果不指定,默认 col_name 为索引值
length 为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
asc 或 desc 指定升序或降序的索引值存储
1. 普通索引
是最基本的索引,它没有任何限制。
2. 唯一索引
与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
3. 主键索引
是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引:
4. 组合索引
指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合:
5. 全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext 索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的 where 语句的参数匹配。fulltext 索引配合 match against 操作使用,而不是一般的 where 语句加 like。它可以在 create table,alter table ,create index 使用,不过目前只有 char、varchar,text 列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用 CREATE index 创建 fulltext 索引,要比先为一张表建立 fulltext 然后再将数据写入的速度快很多。
参考资料
MySQL 建索引的原则