04 数据库
文章平均质量分 92
MySQL
Lamiaomiao
好好学习,天天向上
展开
-
11 Sql语句汇总
sql操作练习题数据库基本操作进入数据库打开cmd 输入mysql -uroot -p123 enter进入查看数据库仓库show databases;选择某个数据库进入use test;查看该数据库的表show tables;查看该表在哪个数据库下面select database();从某个数据库中查看表,注意此时还是处于test数据库中show tables from mysql;查看某个表的信息desc 表名;创建自己的数据库create database bjp原创 2020-08-05 23:53:59 · 269 阅读 · 0 评论 -
10 sql语句
1. 为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?2. 怎么解决分库分表?3. 数据库调优了解么答案4. MySQL执行计划答案5. 为什么推荐自增id,有什么优点答案6. 索引最左匹配7. mysql建立索引的原则答案8. 什么条件不能命中索引答案9. sql很慢,怎么排查?答案10. 数据库的自增主键的优缺点?答案11. 数据库和缓存的一致性问题答案12. 数据库分库后,如何生成全局唯一的ID答案13. Mysql怎么产生死锁参考1参考原创 2020-08-04 10:16:07 · 239 阅读 · 0 评论 -
09 主从复制 redo、undo、binLog
redo、undo、binLogredo log (重做日志)(保证事务的原子性和持久性)InnoDB 存储引擎层特有的一种物理日志,负责把事务对数据库所做的所有修改都记录下来。(系统奔溃重启时可以通过 redo log 日志找回记录)redo log 在事务进行中不断的被写入到磁盘,由于是并发写入的,所以日志不是随事务提交的顺序写入磁盘的。循环写的,空间固定,如果用完了就会覆盖以前的日志。binlog (二进制日志)binlog 是 server 层的一种逻辑日志,记录的是对应的 sql原创 2020-08-04 10:15:32 · 245 阅读 · 0 评论 -
08 SQL优化
1. MySQL优化方式有哪些?开启查询缓存,优化查询;explain你的select查询,这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN 的查询结果还会告诉你,你的索引主键被如何利用的,你的数据表是如何被搜索和排序的;当只要一行数据时使用 limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据;为搜索字段建索引;使用 ENUM 而不是 VARCHAR,如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这原创 2020-08-04 10:14:50 · 135 阅读 · 0 评论 -
07 最左前缀原则、覆盖索引
1. 最左前缀原则?MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。如果不是按照索引的最左列开始查找,则无法使用索引。如下:select * from user where name=xx and city=xx ; //可以命中索引select * from user where name=xx ; // 可以命中索引原创 2020-08-04 10:14:15 · 347 阅读 · 0 评论 -
06 聚集索引和非聚集索引
1. 聚集索引和非聚集索引(辅助索引)聚簇索引:按照每张表的主键构造B+树,非叶子节点用来存放索引,叶子节点(数据页)用来存放行记录数据,按照主键的顺序排序,每个数据页都通过一个双向链表来连接,因此,聚集索引能够在B+树索引的叶子节点上直接找到数据,而且对主键的排序查找和范围查找速度非常快。(通过主键聚集数据,同一个页的数据行在物理上是连续的,不同的页之间用链表串接起来。)如果没有定义主键,InnoDB会选择一个唯一的非空索引替代。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚集索引。非聚原创 2020-08-04 10:13:44 · 178 阅读 · 0 评论 -
05 InnoDB和MyISAM区别
1. InnoDB存储引擎特点InnoDB是Mysql默认的事务型存储引擎,支持事务的ACID特性。InnoDB每一条SQL语句都默认封装成事务,自动提交。最好使用BEGIN显式地开启事务,使用COMMIT提交事务。支持行锁和表锁,默认是行锁。可以只对一行数据加锁,并发性能好。采用MVCC多版本并发控制的方式来读取正在执行写操作的行数据,不需要等待行上X锁的释放,可以避免读写操作的相互阻塞,提高了并发性能。(具体原理是读取该行之前版本的数据,叫做快照数据,是通过undo段实现的。读取快照数据不需要上原创 2020-08-04 10:13:14 · 97 阅读 · 0 评论 -
04 B+树索引
1. 索引是什么?优点和缺点 索引是存储引擎用于提高数据查询效率的一种数据结构。Mysql中的索引是在存储引擎层实现的,在MySQL中使用较多的索引有 Hash 索引和 B+树索引。InnoDB 采用了 B+ 树索引。先通过 B+ 树找到数据所在的页,然后将页读到内存,在内存中找到要查找的数据。(Mysql 将索引存放在磁盘而不是内存中,减少了内存消耗)索引优点: ①减少了服务器需要扫描的数据量;②帮助服务器避免排序;③将随机IO变为顺序IO,索引可以加快数据库访问的效率。索引的缺点:创建索引和维护原创 2020-08-04 10:12:40 · 406 阅读 · 0 评论 -
03 读写锁、意向锁、行表锁
1. Mysql锁了解吗按照锁粒度分类:表锁和行锁按照读写分类:表级锁和行级锁可以进一步划分为共享锁和排它锁还有两个表级锁:意向共享锁和意向排它锁SnailClimb在csdn总结的很好很好。。2. 读写锁和意向锁排他锁(Exclusive),简写为 X 锁,又称写锁。共享锁(Shared),简写为 S 锁,又称读锁。意向共享锁(IS)和意向排他锁(IX):如果事务想要给表中几行数据加上行级共享锁,那么需要先在表级别加上意向共享锁(IS);如果事务想要给表中几行数据加上行级排他锁,那么需要原创 2020-08-04 10:12:07 · 539 阅读 · 0 评论 -
02 锁协议、三大范式
1. 三级封锁协议运用X锁和S锁对数据对象进行加锁时约定的规则就是封锁协议。目的是在不同程序上保证数据的一致性。一级封锁协议:事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。二级封锁协议:在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁原创 2020-08-03 15:51:30 · 486 阅读 · 0 评论 -
01 事务特性 隔离级别 幻读 MVCC
1. 什么是事务,事务的特性事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。① Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么原创 2020-08-03 15:45:31 · 245 阅读 · 0 评论 -
MVCC原理
原创 2019-12-23 18:57:52 · 113 阅读 · 0 评论