MySQL随笔(2)
索引本身是一个独立的存储单位,在该单位里边有记录着数据表某个字段和字段对应的物理空间.索引内部有算法支持,可以说查询速度非常快.
聚簇索引;聚簇索引不是单独的索引而是一种数据存储方式;
聚簇索引的优点是访问的速度更快;缺点是插入速度严重依赖插入顺序,更新聚簇索引列的代价很高,页分裂会导致表占用更多的磁盘空间.
工作原理:首先在索引中查找对应的值,其次根据匹配的索引找到相应的值,然后根据匹配到的索引的纪录找到相对应的数据行,最后将数据结果集返回给用户;
索引速度快的原因: 有算法的技术支持,索引字段与物理地址有直接对应.
优点:
可以给任意字段进行索引;
极大地加快查询速度;
缺点:
创建和维护都需要时间,并且随着数据量的提升所耗费的时间也会增加;
需要占据大量的空间;
将对表中的数据进行增删改查时,索引也需要动态维护,降低了数据的维护速度,
索引的类别:
一、单列索引,一个索引中一个索引中只包含一个列,但是一个表中可以拥有多个单列索引:
普通索引;(index)
唯一索引,允许被索引的数据列包含重复的值(关键字为unique,更多的是为了避免数据重复)允许有空值;
主键索引(关键字为primary) 不允许有空值;
二、全文索引
全文索引(fulltext index) myisam可以设置该索引,只能在myisam引擎上才能使用,只能通过char,varchar,textleixing的字段中才能使用全文索引;
三、组合索引(复合索引):在表中多个字段组合上创建索引只有查询条件中使用了这些字段的左边字段时,索引才会被使用 遵循最左前缀原则.
E.G: index multildx(id,name,age),查询时按照id,name,age或id,name或id,这些情况都会触发索引,age或name,age则不会,这就只最左前缀.
四、空间索引, 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种: geometry, point, linestring, polygon;要求是引擎是myisam 必须将其声明为not null ,主要运用于地图,游戏;
其他 一、外键索引,简称外键,只有innodb存储引擎的表才能使用外键,如果要删除父表的记录(分列表),必须要先删除子表(带外键的表),不然会出错;
创建唯一索引: create table t1 (id int not null, name char(30) nit null, unique index uniqidx(id));
创建全文索引:create table t2 (id int not null, name char(30) nit null,name nvarchar(50) not null,age int not null, fulltext index FUDEX(name));
创建组合索引:create table t3 (id int not null, name char(30) nit null,name nvarchar(50) not null,age int not null, index dex(id,name,age));
创建空间索引:create table ee(id int not null,name varchar(50) not null,age int not null,a geometry not null,spatial index 11b(a));
建完表格后添加索引: alter table ff add index dexx(name(50));
MySQL的索引类型有很多,但是底层存储的数据结构都是B_TREE,B树索引有自己的限制,
如果不是按着索引最左列开始查找就无法使用索引
使用索引时,不能跳过索引中的列
not in和<>操作无法使用索引
如果索引中有某列的查询范围,则其右边的所有列都会无法使用索引
注意: 尽量避免在索引上的列上使用表达式或函数.
索引列具有选择性,索引的选择性是不重复的索引值合表的记录数的比值;
更新索引统计信息及减少索引碎片: analyze table table_name;
事务的隔离性的四个级别:
读取未提交内容(read uncommitted ,也被称之为脏读);
读取提交内容(read committed);
可重读(repeatable read),会出现"幻读"的问题;
可串行化 (serializable),最高级别隔离.
多版本并发控制(multiversion concurrency control).MySQL的默认隔离级别是可重读,利用MVCC机制来解决幻读.
多版本并发控制就是在每一行记录的后面增加两个隐藏列,记录创建版本号和删除版本号,而每一个事务在启动的时候都有一个唯一的递增的版本号.只有read committed和repeatable read 两种事务隔离级别才会使用MVCC,read uncommitted由于是读到未提交的,所以不存在版本问题,而serialiazbel会对所有的读取行进行加锁;
脏读: 当一个事物正在访问数据时,并对数据进行了修改,而这个修改后的数据还没有提交到数据库中,这时另一个事务,也在访问这个数据,然后使用了这个数据;
不可重复读: 在一个事务中,多次读取同一个数据,在这个事务还没结束时,另一个事务也访问该数据,由于第二个事务的修改,第一个事务读取到的数据可能是不一样的,这样就发生了在同一个事务中两次读到的数据是不一样的,因此别称之为不可重复读.
幻读: 是指事务不是独立执行时的一种现象,第一个事务对表中的数据进行修改,这种修改涉及到表中的所有数据行,同时,第二种事务也修改这个表中的数据,这次的修改是向表中插入一行数据,这是第一中操作时就会出现有一个数据行没有被修改的幻觉.
除了事物的三个基本的命令外,还有一个savepoint命令(保存点命令),可以把一个事务分割成几个部分,可以指定在什么位置进行回滚操作.
MySQL随笔(2)的更多相关文章
- ORACLE 迁移MYSQL 随笔
1.把服务器上的ORALCE 数据库导成DMP,然后导入本机的临时库 2.先把ORACLE 表中的DATE 改为TIMESTAMP; a.先建立个表 create table type_table_i ...
- mysql随笔
MySQL查询优化器--非SPJ的优化 MySQL查询优化器--非SPJ优化(一)--GROUPBY优化 http://blog.163.com/li_hx/blog/static/183991413 ...
- MySQL随笔(1)
mysql是一种关系型数据库,和SQL ,oracle一样是较为常用的关系型数据库,属于oracle旗下的产品,在web应用方面,MySQL是最好的RDBMS(relational database ...
- mysql随笔系列-1
MySQL数据库管理 本人实验所用的MySQL数据库版本:5.5.56-MariaDB MariaDB Server 操作系统:centos7.5 1.创建数据库 MariaDB [(none)]& ...
- 深入MYSQL随笔
(1)查询生命周期:从客户端到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回给客户端.执行是整个生命周期中,最重要的阶段. (2)慢查询基础:优化数据访问,减少访问的数据行. (3)查询不 ...
- Mysql 随笔记录
Soundex 声音相似的 select * from demos where Soundex('title') = Soundex('标示'); Concat 拼接语句 select concat( ...
- MYSQL随笔心得1
cmd链接数据库命令: 输入密码进入 显示全部的数据库: 退出服务器连接,还有/p quit 非关系型数据库:NOSQL,not only sql 不仅仅是SQL 代表:redis,mongodb
- mysql 随笔
(select GROUP_CONCAT(car_brand_name separator ',') carBrandName,supplier_id from ycej_supplier_carbr ...
- VS2010/VS2013项目创建及通过ADO.NET连接mysql/sql server步骤(VS2013连接成功步骤见上一篇随笔)
本随笔主要是对初学者通过ADO.NET连接数据库的步骤(刚开始我也诸多不顺,所以总结下,让初学者熟悉步骤) 1.打开VS新建一个项目(这里的VS版本不限,建项目都是一样的步骤) VS2010版本如图: ...
随机推荐
- ajax提交数据
ajax提交数据 注意:获取值可以从方法参数传过来 也可以通过jquery获取对应标签的值:同时参数要与请求的动作方法的参数一致,否则值无法映射 发送 ajax (get 方式简写)请求 注 ...
- MongoDB分片群集的部署(用心描述,详细易懂)!!
概念: MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行存储 优势: 1.减少了每个分片需啊哟处理的请求数,群集可以提高自己的存储容量和吞吐量 2.减少了每个分片存储 ...
- 关于Vue.use()使用详解
问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use() .例如:Vue.use(VueRouter).Vue.use(MintUI).但是用 axios时,就不需要用 Vue.use( ...
- Flex很难?一文就足够了
Flexible Box 是什么 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实 ...
- Certbot为域名申请免费SSL证书
Certbot(Let's Encrypt)是一个非盈利性认证机构通过运行互联网安全研究小组(ISRG)提供X.509 证书的传输层安全性不收取任何费用(TLS)加密.证书有效期为90天,在此期间可以 ...
- 如何用GoldWave批量删除mp3文件开头65秒?
具体操作如下: 一.打开goldwave--文件--批处理 二.批处理设置: 添加需处理的文件或文件夹(右侧) 1.转换:设置转换格式. 2.处理: ...
- cnzz流量统计
var regexp=/\.(baidu)(\.[a-z0-9\-]+){1,2}\//ig; var where =document.referrer; if(where.indexOf(" ...
- PEACHPIE 0.9.11 版本发布,可以上生产了
PeachPie在官方博客(https://www.peachpie.io/2018/10/release-0911-visual-studio.html)发布了PeachPie的0.9.11版本 - ...
- js数组去重常用方法
js数组去重是面试中经常会碰到的问题,无论是前端还是node.js数组常见的有两种形式,一种是数组各元素均为基本数据类型,常见的为数组字符串格式,形如['a','b','c'];一种是数组各元素不定, ...
- python学习第四讲,python基础语法之判断语句,循环语句
目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...