mysql
文章平均质量分 56
yuanyuan啊
远远呀 猿猿呀 一只小菜鸟 飞呀飞呀 总会飞很高!!!
展开
-
mysql数据库索引
索引的本质:数据结构定义:排好序的可快速查找的数据结构。数据库除了数据本身,数据库还维护着一个满足特定查找算法的数据结构。这些数据结构以某种方式指向数据。这样就可以在这些数据结构的基础上实现高级查找算法。这种数据结构叫作索引。一般来说,索引本身也很大,不可能全部存在内存中,因此索引往往以索引文件的形式存储在磁盘上。我们平时所用说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引都是使用B+树,除了B+树这种类型原创 2021-03-26 21:43:11 · 278 阅读 · 2 评论 -
Mysql逻辑架构分层
1.连接层最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2.服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函.原创 2021-03-23 20:31:27 · 333 阅读 · 1 评论 -
Navicat连接mysql8.0版本出现:1251--Client does not support authentication protocol requested by server的解决
当Navicat连接mysql8.0版本出现这样的问题,要怎么解决呢?首先打开数据库:第二步:需要修改加密规则,输入这条命令: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;第三步:需要更新一下账户密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 第四步:刷新原创 2020-09-13 17:43:49 · 86 阅读 · 0 评论 -
启动MySQL报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
这个错误是经常会遇到的解决方案:登录到安装Mysql的主机,打开cmd命令行工具,执行命令mysql -uroot -p,报出下面所描述的错误;在开始菜单中找到计算机管理,在计算机管理中找到【服务】,在服务检查是否存在Mysql服务;如果【步骤2】中找不到Mysql服务需要手动安装Mysql服务,安装命令为mysqld -install,由于本机中已经安装了mysql服务...原创 2020-03-30 10:00:21 · 218 阅读 · 0 评论 -
Mysql的四种隔离级别、特点
事务的 ACID事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事...原创 2020-03-21 10:10:02 · 350 阅读 · 0 评论 -
为啥使用B+树作为索引而不是b树,他们之间的区别是啥
前天美团面试,问到了这个题目,所以我特意记了下来为什么选择B树/B+树,而不是红黑树?我们知道MySQL的数据是存放在磁盘上的,而读取磁盘的IO开销非常大,当需要定位到磁盘的具体位置时就需要几次IO操作,所以每次进行查找时就要想办法尽量控制对磁盘的IO操作次数,而B+树的结构正好满足。B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树...原创 2020-03-21 08:05:23 · 355 阅读 · 0 评论 -
数据库之乐观锁与悲观锁
悲观锁 :总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿 数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资 源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线 程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁 等,读锁,写锁等,都是在做操作之前先上锁。Java中 synchronized和 ReentrantLock等独占...原创 2020-03-18 14:50:57 · 111 阅读 · 0 评论 -
mysql的主从复制
主从复制:是mysql数据库的一种容灾备份方案,是mysql的自带功能,无需借助第三方工具,mysql的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的二进制日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的sql语句重新应用到mysql数据库中。mysql主从复制是如何工作的复制一共分3个步骤:master将改变记录到二进制日志中slave将master的二进制日...原创 2020-03-17 19:18:50 · 118 阅读 · 0 评论 -
mysql面试题整理2
1.数据库三范式是什么?第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系 统都满足第一范式数据库表中的字段都是单一属性的,不可再分)第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足 第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每 个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储 各个实例的惟一标识。这个惟一属性列被称为主关...原创 2020-02-15 11:42:16 · 336 阅读 · 0 评论 -
mysql面试题整理
1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录, 再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?(1)如果表的类型是 MyISAM,那么是 18 因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大 ID 也不会丢失(2)如果表的类型是 ...原创 2020-02-15 11:07:18 · 386 阅读 · 0 评论 -
MySQL 性能优化的 21 个最佳实践
1. 为查询缓存优化你的查询 大多数的 MySQL 服务器都开启了查询缓存。这是提高性最有效的方法之 一,而且这是被 MySQL 的数据库引擎处理的。当有很多相同的查询被执行了多 次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不 用操作表而直接访问缓存结果了。 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因 为,我们某些查询语句会让 MySQL 不使用缓...原创 2020-02-15 08:11:17 · 3337 阅读 · 4 评论 -
mysql 高级 数据库锁
是什么?锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源的征用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库极为重要。锁的分类:从对数据库操作的类型(读|写)分*读锁(共享锁):针对同一份数据,多个读操作可以同时进行而...原创 2020-01-29 11:03:39 · 112 阅读 · 0 评论 -
mysql 高级 使用Show Profile进行sql分析
当使用explain不能进行解决时,使用Show Profile进行sql分析是什么?是mysql提供可以用来分析当前会话中语句执行的消耗情况,可以用于sql的调优的测量。默认情况下,参数处于关闭状态,并保存最近15次的运行结果。分析步骤:1. 查看是否支持,看看当前的mysql版本是否支持;命令:show variables like ‘profiling’;2. 开启功能,默认是...原创 2020-01-29 09:34:23 · 225 阅读 · 0 评论 -
mysql 如何插入千万条数据
首先创建一个存储过程(函数)生成随机字符串的存储过程下面的存储过程调用了上面生成随机字符串的存储过程原创 2020-01-29 08:15:35 · 649 阅读 · 0 评论 -
mysql高级 慢查询日志
是什么?MYSQL的慢查询日志是MYSQL提供的一种日志记录,它用来记录在MYSQL中运行时间超过long_query_time的SQL,则会被记录到慢查询日志中具体指运行时间超过long_query_time的SQL,则会被记录到慢查询日志中,意识是运行10秒以上的语句由它来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql语句执行超过5秒,我们就算慢sql,希望能收集超过5秒的s...原创 2020-01-28 10:42:12 · 117 阅读 · 0 评论 -
mysql 优化 sql查询优化
1.永远是小表驱动大表优化原则:2.优化order by 语句order by子句,尽量使用Index方式排序,避免使用FileSort方式排序。尽可能在索引列上完成排序操作,遵照索引建的最佳左排序优化策略:*增大sort_buffer_size参数设置*增大max_length_for_sort_data参数设置order by 关键字优化:1.Order by 时se...原创 2020-01-28 08:36:09 · 190 阅读 · 0 评论 -
mysql 索引优化(索引失效的原因)
索引失效的原因:全值匹配我最爱最佳左前缀法则,带头大哥不能死,中间兄弟不能少。不要在索引列上做任何操作范围条件后列上索引失效explain select * from student where age > 1 and name = ‘王五’;查找级别是范围,name这个索引失效了尽量使用覆盖索引减少使用select *使用不等于(!= 或者<&...原创 2020-01-26 08:18:22 · 356 阅读 · 0 评论 -
mysql 高级 EXPLAIN
使用EXPLAIN关键字可以模拟优化器执行sql查询语句,从而知道mysql是如何处理的sql语句。分析你的查询语句或是表结构的性能瓶颈。1. 怎么用?EXPLAIN+sql语句;会得到如下的字段:字段解释:id:select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。三种情况:*id相同,执行顺序由上至下*id不同,如果是子查询,id的序号会递增...原创 2020-01-26 06:24:19 · 224 阅读 · 0 评论 -
mysql 索引
1. 什么是索引?索引是帮助mysql高效获取数据的数据结构(索引的本质是数据结构)索引的目的在于提高查询效率,可以类比字典。 *索引可以简单的理解为“排好序快速查找的数据结构”*在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据结构以某种方式指向数据。这样就可以在这些数据结构上实现高级查找算法。这种数据结构就死索引。索引方式图:2.一般来说索引本身也很大,不可能全...原创 2020-01-24 15:13:22 · 3242 阅读 · 0 评论 -
sql joins
内连接select <字段> from tableA A inner join tableB B on A.key = B.key;左连接select <字段> from tableA A left join tableB B on A.key = B.key;右连接select <字段> from tableA A right ...原创 2020-01-24 10:55:47 · 314 阅读 · 0 评论