mysql高级记录

1. mysql分层

1.连接层 
	提供与客户端的链接
2.服务层
	提供用户使用的接口
 	提供sql优化器 mysql query Optimizer
3.引擎层
	提供数据的存储方式(innodb myisam)
4.存储层
	存储数据

2.myisam引擎和innodb引擎的区别

	myisam使用的是非聚簇索引,表锁 ,写优先,性能优先,不支持事务,适合做非高并发,读任务
	innodb使用的是聚簇索引,行锁,语句的执行是由获得行锁的顺序决定的,事务优先,支持事务,适合做高并发情况

3.mysql机器读取顺序

from确定表 
接下来搞连接 先 on 在join 
连接完成后筛选 where
筛选后 就形成了一张成品表,在进行分组groupby 后在筛选 having
最后排序 order by ,然后截取 limit

4.mysql锁

读锁(共享锁),写锁(排他锁),每一种锁在粒度划分上又分为行锁和表锁

线程 :a,b   
读锁:a在给某条记录加读锁时,也就是select某条记录时,a不能读写其他记录,不能写自己锁定的记录,b可以读写其他记录,可以读被a锁定的记录,而不可以写
写锁:a在给某条记录加写锁时,也就是updata,delect。。。某条记录时,a不能读写其他记录,可以读写自己锁定的记录,b可以读写其他记录,不可以读写被a锁定的记录
	 
表锁:指a锁定一张记录时(比如select某表的记录,或updata,delect。。。某条记录时),其他任何线程无法操作(读锁的话,这里操作代表写,写锁则表示写和读)被a锁定的那条记录所属的整张表,即使a和其他线程操作的是一张表中的不同记录
行锁:指a在锁定一张记录时(。。。)其他任何线程无法操作那条记录,对表无要求
间隙锁: 指索引不连续时可能意外的锁定其他操作
锁升级: 指不规范使用查询导致innodb行锁升级为表锁
如何锁定一行:myisam不行没有行锁,在innodb引擎中 sql语句后加for updata(myisam引擎sel语句自动加读锁,up,del,in自动加写锁,而innodb引擎sel语句默认不加锁,up,de,ins自动加写锁,所以需要sel语句加锁,需要添加以下规则:
    共享锁(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE
    排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE)
查询锁的状态:show status like 'table%';

5.事务

acid:原子,一致,隔离,持久	
问题:跟新丢失,脏读,不可重复读,幻读
解决:读未提交,不可重复读,可重复读,串行化

6. 索引

1.创建索引
	create index haha on teacher (name)
	alter table teacher add index haha (name) 
2.显示索引
	show index from  teacher 
3.删除索引
	drop index  haha on teacher 
	alter table teacher drop index haha 
4.索引结构
	btree和hash 
	btree:内部使用b+树来进行索引(为什么不用b树?每个叶子节点是固定的,如果去掉数据就可以存放更多的索引,同样的数据可以将树变得更矮),这里又分为不同的实现,
		当第四层是btree第三层是innodb的时候,b+树索引将会在叶子节点处存放数据实体和索引的组合(如果是以非id为索引的时候,在叶子节点会存放指向以id为索引时叶子节点存放数据的指针,即用主键索引来组织整张表中的所有数据),如果你不建主键索引,mysql会找你的列中哪个全部是不一样的,将它设置为主键,如果都没有,它将帮你额外建一个列作为主键列,推荐使用自增整数主键,因为在寻值过程涉及很多比较,使用整数比较节省性能,而且在构建索引的时候,因为叶子节点都是递增的,向其中插入的时候如果是有序会直接延续,如果是无序的话还需要重整一下叶子结点的平衡
		当第四层是btree第三层是myisam时,b+树将会在叶子节点存放索引和指向存在外存数据的指针,不再存放数据实体,(这也是聚集索引和非聚集索引的区别)
	hash:内部使用hash实现,查询极快,但不支持包括范围查询以内的所有涉及排序的查询

7.优化

1.尽量全值匹配
2.最佳左前缀
3.不要在索引列上加计算
4.尽量使用覆盖索引
5.在使用不等与的时候会导致全表扫描
6.is null和is not null也无法使用索引
7.不要写范围,写范围后索引列右边的会失效
8.like如果使用‘test%’右边的会失效,其他全部失效,如果想要生效,需要使select的值全部在索引上
9.字符串不加单引号死罪
10.少用or
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括学生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理、企业管理、简历管理、老师管理、简历投递管理、新闻资讯管理、新闻资讯收藏管理、新闻资讯留言管理、学生信息管理、宣传管理、学生管理、职位招聘管理、职位收藏管理、招聘咨询管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生就业服务平台管理系统可以提高大学生就业服务平台信息管理问题的解决效率,优化大学生就业服务平台信息处理流程,保证大学生就业服务平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理新闻信息,管理大学生就业服务平台信息,包括考试管理,培训管理,投递管理,薪资管理等,可以管理新闻信息。 考试管理界面,管理员在考试管理界面中可以对界面中显示,可以对考试信息的考试状态进行查看,可以添加新的考试信息等。投递管理界面,管理员在投递管理界面中查看投递种类信息,投递描述信息,新增投递信息等。新闻信息管理界面,管理员在新闻信息管理界面中新增新闻信息,可以删除新闻信息。新闻信息类型管理界面,管理员在新闻信息类型管理界面查看新闻信息的工作状态,可以对新闻信息的数据进行导出,可以添加新新闻信息的信息,可以编辑新闻信息信息,删除新闻信息信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值