数据库主键

MySQL 索引

▼魔方 西西 提交于 2019-11-27 21:41:41
什么是索引   相当于书目录,用于快速检索   优点     提高数据检索效率     提高表间的JOIN效率     利用唯一性索引,保证数据的唯一性     提高排序和分组效率   缺点      消耗更多物理存储     数据变更时,索引也需要更新,降低更新效率   哪种情况下应该创建索引     经常检索的列     经常用于表连接的列     经常排序/分组的列   索引不使用建议     基数很低的列     更新频繁但检索不频繁的列     BLOB/TEXT 等长内容列     很少用于检索的列 二分查找   折半查找,binary search   一种在有序数组中查找某一特定元素的搜索算法   二分查找发的优点是比较次数少,查找速度快,平均性能好,其缺点是要求待查表为有序表,且插入删除困难,因此,二分查找法适用于不经常变动而查询频繁的有序列表 二叉树,binary tree   二叉树是每个节点至多只有二颗子树(不存在度大于2的节点),二叉树的子树有左右有序之分,次序不能颠倒。    平衡树,平衡二叉树, self-balancing binary search tree   改进的二叉查询树。一般的二叉查找树的查询复杂度是跟目标节点到树根的距离(即深度)有关,因此当节点的深度普遍较大时,查询的均摊复杂度会上升,为了更高效的查询,有了平衡树   平衡二叉树的特点

python day35

谁都会走 提交于 2019-11-27 21:26:48
今日内容 存储引擎 定义: 不同的数据应该有不同的处理机制 mysql存储引擎 innodb : 默认的存储引擎,查询速度较myisam慢,但是更安全 myisam : 旧版本所用引擎 memory: 内存引擎(数据全部存在内存中) blackhole: 无论存什么,都立马消失(黑洞) 研究每一个存储引擎存取数据的特点 # 查看存储引擎 show engines; # 查看不同引擎存储表结构文件特点 create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=blackhole; create table t4(id int)engine=memory; ​ insert into t1 values(1); insert into t2 values(1); insert into t3 values(1); insert into t4 values(1); innodb # innodb包含 row-level locking # 行锁 foreign keys # 外键 Supports transactions # 支持事务 # 创建两个文件 # 一个FRM文件,是表结构 # 一个IBD文件,一个是真实数据文件

python day35

青春壹個敷衍的年華 提交于 2019-11-27 21:26:32
今日内容 存储引擎 定义: 不同的数据应该有不同的处理机制 mysql存储引擎 innodb : 默认的存储引擎,查询速度较myisam慢,但是更安全 myisam : 旧版本所用引擎 memory: 内存引擎(数据全部存在内存中) blackhole: 无论存什么,都立马消失(黑洞) 研究每一个存储引擎存取数据的特点 # 查看存储引擎 show engines; # 查看不同引擎存储表结构文件特点 create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=blackhole; create table t4(id int)engine=memory; ​ insert into t1 values(1); insert into t2 values(1); insert into t3 values(1); insert into t4 values(1); innodb # innodb包含 row-level locking # 行锁 foreign keys # 外键 Supports transactions # 支持事务 # 创建两个文件 # 一个FRM文件,是表结构 # 一个IBD文件,一个是真实数据文件

python day35

流过昼夜 提交于 2019-11-27 21:26:31
今日内容 存储引擎 定义: 不同的数据应该有不同的处理机制 mysql存储引擎 innodb : 默认的存储引擎,查询速度较myisam慢,但是更安全 myisam : 旧版本所用引擎 memory: 内存引擎(数据全部存在内存中) blackhole: 无论存什么,都立马消失(黑洞) 研究每一个存储引擎存取数据的特点 # 查看存储引擎 show engines; # 查看不同引擎存储表结构文件特点 create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=blackhole; create table t4(id int)engine=memory; ​ insert into t1 values(1); insert into t2 values(1); insert into t3 values(1); insert into t4 values(1); innodb # innodb包含 row-level locking # 行锁 foreign keys # 外键 Supports transactions # 支持事务 # 创建两个文件 # 一个FRM文件,是表结构 # 一个IBD文件,一个是真实数据文件

Python 存储引擎 数据类型 主键

☆樱花仙子☆ 提交于 2019-11-27 21:26:14
一 存储引擎 1.不同的数据应该有着不同的处理机制 2.常见的存储引擎和特点 #1.Inodb: mysql默认的存储引擎,查询速度比Myisam引擎较慢,但是更安全。 #2.Myisam: 老版本的mysql的存储引擎 #3.memory:内存引擎(数据全部存在内存中,服务端重启数据就不存在了) #blackhole:无论存什么立马消失 3.查看数据库的所有引擎: show engines; 二 数据库中的数据类型 整型 1.分类:TINYINT SMALLINT MEDIUMINT INT BIGINT 2.作用:存储年龄,等级,id,各种号码等 3.注意:只有整型后面的数字不是用来限制存储数据的长度 而是用来控制展示的数据的位数: int(8) 够/超8位有几位存几位,不够8位空格填充。 create table t4(x int(8)); insert into t4 values(4294967296123); # 显示时,不够8位用0填充,如果超出8位则正常显示 create table t5(x int(8) unsigned zerofill); insert into t5 values(4294967296123); # create table t6(id int(10) unsigned); # create table t7(id int(11));

MySQL

烂漫一生 提交于 2019-11-27 21:03:59
1.1 mysql 架构   mysql 分为 server 层和存储引擎 1.1.1 server层 连接器:管理连接权限验证 查询缓存:命中缓存直接换回查询结果 分析器:分析语法 优化器:生成执行计划,选择索引 执行器:操作索引返回结果 1.1.2 存储引擎 存储引擎负责数据的存储和提取;其架构是插件式的。innodb 在 mysql5.5.5 版本开始成为 mysql 默认存储引擎。 各存储引擎比对: InnoDB:支持事务,支持外键,InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据,不支持全文索引。 MyISAM:不支持事物,不支持外键,MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的,查询效率上 MyISAM 要高于 InnnDB ,因此做读写分离的时候一般选择用 InnoDB 做主机,MyISAM 做从机 Memory:有比较大的缺陷使用场景很少;文件数据都存储在内存中,如果 mysqld 进程发生异常,重启或关闭机器这些数据都会消失。 1.1.3 sql 的执行过程   第一步客户端连接上 mysql 数据库的连接器,连接器获取权限,维持管理连接;连接完成后如果你没有后续的指令这个连接就会处于空闲状态

Hibernate映射的基本操作

假装没事ソ 提交于 2019-11-27 17:28:07
Hibernate映射主要是通过对象关系映射文件实现,对象关系映射文件把数据库中的实体(一般为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。以后,在Hibernate中对数据库的操作就直接转换为对这些实体对象的操作了。 1. 映射文件说明: 正确理解各个配置选项的含义是掌握映射文件的关键。映射文件可以对面向对象中的关联关系、继承关系和组合关系等各种关系进行配置。如: <!-- XML 文件的声明 --> <? xml version = "1.0" encoding = "utf-8" ?> <!-- hibernate DTD 文件的声明 --> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!-- 映射文件的根节点 --> < hibernate-mapping > <!-- 对象关系映射的开始: class 元素表示类和数据库中的表的映射关系。 name 属性指定持久化类(或者接口)的 Java 全限定名; table 属性指定要映射的对应的数据库表名 --> < class name =

mysql 范式和反范式

拟墨画扇 提交于 2019-11-27 16:22:43
第一范式(1NF) 强调的是列的原子性,即列不能够再分成其他几列。 第二范式 (2NF) 首先是 2NF,另外包含两部分内容一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 第三范式 (3NF) 首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。 第三范式通常已经可以满足业务需求了,表之间的关系也比较清楚了,容易维护。但是为什么要反范式呢? 首先我们需要了解到定义数据库范式的历史背景,在20世纪70年代到80年代范式基本完善定型。在那个时候的系统下:一个硬盘的大小有限,一般也就几百兆(价格也比较高),上网的人也少,所以范式的理论强调减少依赖,降低冗余节省空间的使用。而现在最普通的硬盘都是500G,大一点的就上T了而且价格便宜,同时上网人数也增多了,数据库面临则高并发,业务逻辑复杂,低延迟的要求。很难在遵循这范式的基础上进行数据库设计开发,那么适当的降低范式,增加冗余,用空间来换时间是值得的。最低可以把范式降低到1NF。 通常在设计数据库时遵循以下原则: 1.核心业务使用范式。在类似交易有关的这种敏感核心业务中,强调数据安全和一致性,需要遵循范式保证数据唯一和一致。具体什么是核心业务视情况而定。 2.弱一致性需求——反ACID

MySQL数据库——索引

安稳与你 提交于 2019-11-27 16:11:09
索引 ——提高数据库的性能 只要执行正确的 create index ,查询速度就可能提高成百上千倍;但是,查询速度的提高是以插入、更 新、删除的速度为代价的,这些写操作,增加了大量的IO;所以它的价值,在于提高一个海量数据的检索速度。 常见索引分类: 主键索引(primary key) 唯一索引(unique) 普通索引(index) 全文索引(fulltext) 基本原理: 没有索引进行的是整表扫描,添加索引后,索引会形成一棵二叉树,通过二分法查找的思想,提升查找速度。 索引是以空间换时间。 创建索引(示例) 创建索引 1.创建主键索引 方法1 方法2 方法3 主键索引特点: 一个表中,最多有一个主键索引,当然可以符合主键; 主键索引的效率高(主键不可重复); 创建主键索引的列,它的值不能为null,且不能重复; 主键索引的列基本上是int. 2.创建唯一索引 方法1 方法2 方法3 唯一索引的特点: 一个表中可以有多个唯一索引; 查询效率高; 如果在某一列建立唯一索引,必须保证这列不能有重复元素; 如果一个唯一索引上指定not null,等价主键索引. 3.创建普通索引 方法1 方法2 方法3 普通索引的特点: 一个表中可以有多个普通索引; 如果某列需要创建索引,但有重复的值,就应该使用普通索引. 4.创建全文索引 当对文章字段或有大量文字的字段进行检索时,会使用到全文索引.

【mysql】mysql总述——存储引擎、索引、触发器、事务以及简单的SQL语句等

一个人想着一个人 提交于 2019-11-27 16:10:44
rhel-server-6.3-i386-dvd.iso service mysqld start mysql -u root -p service mysqld start 提起服务器端; mysql -u root -p 连接到 mysql 服务器上; 一、存储引擎(重点掌握MYISAM INNODB) (一)MYISAM存储引擎: 不支持外键、不支持事务; 支持全文索引、 支持表锁、底层用B+树实现; 会生成的文件:.frm:存储所有的创建信息;.myi:MYISAM的索引;.myd:存储数据 使用非聚簇索引,并且也可以无索引; (二)INNODB存储引擎 不支持全文索引; 支持外键、支持事务、支持行锁、底层用B+树实现; INNODB是将数据和索引放在一起。 Innodb采用聚集索引的方式。有主键建立主键索引,没有主键有唯一键建立唯一索引;没有主键,没有唯一键,为每一行生产一个6字节的行id,作为主键。隐藏autoincreament可自增长; 主索引:叶子节点存放真实的数据;进行查询时需要一次查找; 辅助索引:叶子结点存放主索引的索引值;进行查询时需要两次查找; (三)Memory存储引擎 数据是存放在内存中的;将数据放在内存中,如果数据库重启或者宕机,表数据就会丢失。非常适合存储一些临时表,默认的是哈希索引,不是B+树索引,varchar()默认是按照char()存储的