Mysql-基础篇
文章平均质量分 71
有关Mysql的一些知识点
Alan0517
...
展开
-
Mysql基础篇-41-MySQL一张表中到底可以有多少个字段?
结论:表字段限制表字段长度限制。原创 2022-12-06 21:18:51 · 717 阅读 · 0 评论 -
Mysql基础篇-40-Window下载安装Mysql
6. Config Type选择“Development Machine”,选择此项将使用较小的内容来运行我们的mysql server,对应小型软件、学习是完全够用的。在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令。1、以管理员的权限 net stop mysql ,关闭mysql服务。2、以管理员的权限 mysqld -remove ,卸载mysql服务。因为上面设置的mysql服务名为MysqlServer57。若执行命令时提示:服务名无效;原创 2021-12-08 23:19:32 · 939 阅读 · 0 评论 -
Mysql基础篇-39-如何在线DDL
新增、修改、删除数据,都可能造成表空洞。原创 2021-11-18 13:18:40 · 1715 阅读 · 0 评论 -
Mysql基础篇-38-设计表字段的一些建议
主键可以使用无符号作为自增主键,一般int就行,无符号的int最大值可以达到42亿多,足够满足一般公司需求,换言之,即使超过这个数量了,后面可以采取分库分表,实在特殊需求,可以使用无符号bitint;原创 2021-11-18 13:17:15 · 2788 阅读 · 0 评论 -
Mysql基础篇-37- 如何查询B+树高以及树能存放多少数据
计算机有五大组成部分:控制器,运算器,存储器,输入设备,输出设备。存储器范围比较大,但是数据具体怎么存储,有自己的最小存储单元。数据持久化存储磁盘里,磁盘的最小单元是扇区,一个扇区的大小是 512个字节文件系统的最小单元是块,一个块的大小是 4KInnoDB存储引擎,有自己的最小单元,称之为页,一个页的大小是16K。原创 2021-11-16 12:10:22 · 3238 阅读 · 2 评论 -
Mysql基础篇-36-mysql死锁检测 innodb_deadlock_detect
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。● 发起死锁检测,主动回滚一条事务,让其他事务继续执行(innodb_deadlock_detect=on)。死锁检测的原理是构建一个以事务为顶点、锁为边的有向图,判断有向图是否存在环,存在即有死锁。检测到死锁之后,选择插入更新或者删除的行数最少的事务回滚,基于。表中的 trx_weight 字段来判断。原创 2021-07-31 20:01:11 · 1953 阅读 · 0 评论 -
Mysql基础篇-36-模糊匹配like%%优化-索引条件下推ICP
MySQL 5.6开始支持,不支持ICP之前,当进行索引查询时,首先根据索引来查找数据,然后再根据where条件来过滤,扫描了大量不必要的数据,增加了数据库IO操作。ICP:全称为Index Condition Pushdown,是MySQL 5.6引入的一项优化策略。简单的来说就是将本该在MySQL进行过滤的条件下推到Innodb引擎层去做。但是这种策略和我们平时说的使用到了索引实际上是不同的,我们平时说的用到了索引一般指的是使用到了索引进行定位和访问,但是这里却是一种过滤操作。原创 2021-03-22 23:13:05 · 673 阅读 · 0 评论 -
Mysql基础篇-35-limit的优化
此种方式在查询前200万左右的数据时基本能在10s左右搞定,但是要查询 500万-600万这区间数据时覆盖索引的耗时显著提升。mysql 可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件,换句话说:查询列要被所创建的索引覆盖。如 select * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢。不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。原创 2021-04-26 22:18:05 · 685 阅读 · 0 评论 -
Mysql基础篇-31-不登陆使用命令执行sql -e用法
引入平时我们执行sql要么通过第三方客户端,要么登录命令行执行但是在生产环境,没有第三方客户端,也不可能说登录操作,只能选择使用命令即: 使用 mysql -h IP -u 用户名 -p 密码 -e sql当我们将执行日志放到文件中时,可以这样操作同时 -e也很多时候结合 -v使用用 mysql -e 生成结果导入指定文件时:● 若要同时显示语句本身:-v● 若要增加查询结果行数:-vv● 若要增加执行时间:-vvv当我们想通过命令登录mysql并且判断是否登录成功,就可以原创 2021-01-22 22:43:41 · 674 阅读 · 0 评论 -
Mysql基础篇-32-Linux安装Mysql
centos7 关闭防火墙CentOS 7.0默认使用的是firewall作为防火墙查看防火墙状态停止firewall禁止firewall开机启动开放指定端口关闭指定端口重启防火墙。原创 2021-02-25 22:51:59 · 154 阅读 · 0 评论 -
Mysql基础篇-34-Undo日志与redo日志
我们知道,MySQL中的redo日志记录了事务的行为,在服务器宕机的时候,可以通过重做事务来达到恢复数据的目的,然而,有的时候,事务还有回滚的需求,也就是说,我们需要知道某条在变成当前情况之前的样子,这种情况下,undo日志就派上用场了。也就是说,undo日志是为了将数据恢复到修改之前的样子,因此在对数据库进行修改的时候,我们需要知道,这个过程中会产生redo日志和undo日志。原创 2021-03-27 17:16:57 · 705 阅读 · 0 评论 -
Mysql基础篇-33-索引-分类(Hash,二叉树,红黑树,B树,B+树)
也就是说维护索引页的索引页是在真正存储记录和数据页的索引页的上一层,现在如果你想查找 id=20 的这条记录,那就是从最上层的索引页开始查找,通过二分法查找,很快就能够定位到 id=20 s这条记录是在索引页 2 上,然后到就索引页 2 上面查找,接着就是和之前一样了(注意,索引页中的记录也是通过单向链表连接的),根据各个最小的主键能够定位到 id=20 是在数据页5上,假设数据页5是这样子的。但是现在问题又来了,既然这里强调的是主键索引,那我们平时开发中除了主键索引其他的索引也用的不少,这时候该怎么办?原创 2021-03-22 22:12:56 · 636 阅读 · 0 评论 -
Mysql基础篇-29-主从复制
slave服务器收到bin-log日志内容,将bin-log日志内容写入relay-log中继日志,创建一个master.info的文件,该文件记录了master ip 用户名 密码 master bin-log名称,bin-log position。MASTER_HOST=‘主机IP’,MASTER_USER=‘zhangsan’,MASTER_PASSWORD=‘123456’,MASTER_LOG_FILE=‘File名字’,MASTER_LOG_POS=Position数字;原创 2021-01-12 07:11:19 · 185 阅读 · 0 评论 -
Mysql基础篇-28-用户管理和权限管理
localhost 本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。就算 all privileges 了所权限,grant_priv 权限也只 root 才能拥。#所通过user表的修改,必须用该命令才能生效。#给li4用户用本地命令行方式下,授予atguigudb这个库下的所表的插删改查的权限。#授予通过网络方式登录的的joe用户 ,对所库所表的全部权限,密码设为123.机器名 通过制定i网络中的机器名进行的TCP方式的连接。原创 2021-01-12 07:11:01 · 183 阅读 · 0 评论 -
Mysql基础篇-27-安装配置
设置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。对于GROUP BY聚合操作,如果在SELECT中的列,没在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。原创 2021-01-12 07:10:38 · 178 阅读 · 0 评论 -
Mysql基础篇-26-锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、效性是所数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。原创 2021-01-12 07:10:15 · 224 阅读 · 0 评论 -
Mysql基础篇-25-Mvcc与锁的理解(事务隔离级别)
如果数据库中的事务都是串行执行的,这种方式可以保障事务的执行不会出现异常和错误,但带来的问题是串行执行会带来性能瓶颈;而事务并发执行,如果不加以控制则会引发诸多问题,包括死锁、更新丢失等等。这就需要我们在性能和安全之间做出合理的权衡,使用适当的并发控制机制保随并发事务的执行。原创 2021-01-12 07:09:42 · 748 阅读 · 1 评论 -
Mysql基础篇-23-触发器Tigger
!!尽量少使用触发器,不建议使用。 假设触发器触发每次执行1s,insert table 500条数据,那么就需要触发500次触发器,光是触发器执行的时间就花费了500s,而insert 500条数据一共是1s,那么这个insert的效率就非常低了。因此我们特别需要注意的一点是触发器的begin end;之间的语句的执行效率一定要高,资源消耗要小。 触发器尽量少的使用,因为不管如何,它还是很消耗资源,如果使用的话要谨慎的使用,确定它是非常高效的:触发器是针对每一行的;对增删改非常频繁的...原创 2021-01-12 07:08:54 · 368 阅读 · 0 评论 -
Mysql基础篇-22-日志-全局查询日志
此后 ,你所编写的sql语句,将会记录到mysql库里的general_log表,可以用下面的命令查看。全局日志可以存放到日志文件中,也可以存放到Mysql系统表中。存放到日志中性能更好一些,存储到表中。尽量不要在生产环境开启这个功能。#记录日志文件的路径。原创 2021-01-12 07:08:36 · 176 阅读 · 0 评论 -
Mysql基础篇-21-show profile
是什么:是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量.默认情况下,参数处于关闭状态,并保存最近15次的运行结果。原创 2021-01-12 07:08:15 · 178 阅读 · 0 评论 -
Mysql基础篇-30-架构总览
1、InnoDB存储引擎InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。除非非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。行级锁,适合高并发情况2、MyISAM存储引擎MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁(myisam改表时会将整个表全锁住),一个毫无疑问的缺陷就是崩溃后无法安全恢复。3、Archive引擎。原创 2021-01-12 07:11:59 · 213 阅读 · 0 评论 -
Mysql基础篇-20-缓存
Mysql缓存机制即缓存Sql文本以及缓存结果,用kv形式保存在服务器内存中,如果运行相同的Sql,服务器直接从缓存中获取结果,不需要取解析,优化,执行Sql。原创 2021-01-11 22:13:21 · 904 阅读 · 0 评论 -
Mysql基础篇-19-Mybatis的一级缓存和二级缓存
Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSessiono言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要删新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。SqlSession的生命周期。原创 2021-01-11 22:12:57 · 1537 阅读 · 0 评论 -
Mysql基础篇-18-mysqldump命令大全
mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql。还原:系统命令行: MySQL -uroot -p123456 < f:\all.sql。–tables:覆盖 --databases or -B选项,后面所跟参数被视作表名。系统命令行: mysql -uroot -p123456 <f:\all.sql。–databases, -B: 用于备份多个数据库,如果没有该选项,–all-databases, -A: 备份所有数据库。原创 2021-01-11 22:12:27 · 1341 阅读 · 0 评论 -
Mysql基础篇-17-日志分析工具Mysqldumpslow
在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具。另外建议在使用这些命令时结合 | 和more 使用 ,否则可能出现爆屏情况。得到照时间排序的前10条里面含左连接的查询语句。得到返回记录集最多的10个SQL。得到访问次数最多的10个SQL。原创 2021-01-11 22:11:40 · 285 阅读 · 0 评论 -
Mysql基础篇-16-慢查询日志
是指: MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。修改后发现long_query_time并没改变。原创 2021-01-11 22:09:14 · 154 阅读 · 0 评论 -
Mysql基础篇-15-索引-Group By关键字优化
group by实质是先排序后进行分组,遵照索引建的最佳左前缀;当无法使用索引列,增大max_length_for_sort_data参数的设置+增大sort_buffer_size参数的设置where高于having,能写在where限定的条件就不要去having限定了。尽量不要使用 distinct 关键字去重:优化例子:select kcdz form t_mall_sku where id in( 3,4,5,6,8 ) 将产生重复数据,select distinct kcdz form原创 2021-01-11 22:07:34 · 222 阅读 · 0 评论 -
Mysql基础篇-14-索引-Order By关键字优化
在sort_buffer中,方法B比方法A要多占用很多空间,因为方法B是把所字段都取出, 所以可能取出的数据的总大小超出了sort_buffer的容量,导致每次只能取sort_buffer容量大小的数据,进行排序(创建tmp文件,多路合并,排完再取取sort_buffer容量大小,再排……1.2 两种算法的数据都可能超出sort_buffer的容量,超出之后,会创建tmp文件进行合并排序,导致多次I/O,但是用单路排序算法的风险会更大一些,所以要提高sort_buffer_size。原创 2021-01-11 22:07:09 · 519 阅读 · 0 评论 -
Mysql基础篇-13-索引-查询优化
答案是:会走 idx_no(task_no) 索引,而不是走idx_de_no(deleted, task_no),原因是索引查询优化器还会根据统计信息、表的大小和复杂度等因素来决定最终使用的索引,delete字段只有0和1两种可能,复杂度太低,优化器最终会选择idx_no索引进行查询,所以我们在选取字段做复合索引时,会优先使用复杂度高的(零散度高的)字段;比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式。原创 2021-01-11 22:06:48 · 422 阅读 · 0 评论 -
Mysql基础篇-12-Explain-Sql执行计划
表示索引中使用的字节数,可以通过计算该列计算查询中使用的索引的长度。key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算的,不是通过表内检索出的。显示索引的哪一列被使用了,如果可能的话,是一个常量,哪些列或常量被用于查找索引列上的值。显示可能应用在这张表中的索引,一个或者多个或者没有,查询涉及到的字段上若存在索引则该索引将被列出,但不一定被查询实际使用。实际使用的索引,如果为null,则没有使用索引,查询中若使用了覆盖索引,则该索引仅出现在key列表中。原创 2021-01-11 22:06:25 · 355 阅读 · 0 评论 -
Mysql基础篇-11-哪些情况需要建索引哪些不需要
一张表需不需要建立索引,首先得先看下表里面的数据的零散度,如果数据大量重复,则不需要建索引,零散度越高,建索引才有意义,其次再看表大小,再根据查询条件具体优化。原创 2021-01-11 22:05:55 · 2394 阅读 · 0 评论 -
Mysql基础篇-10-单值或复合索引
···单值或复合索引假设一个表user 有 id,name email address字段,该表数据有上千万很多人喜欢用name作为条件去查询,这个时候可以给name建立索引去查询select * from user where name="";建单值索引create index idx_user_name on user(name);很多人喜欢用name和email作为条件去查询,这个时候可以给name建立索引去查询select * from user where name=’‘and em原创 2021-01-10 15:07:45 · 289 阅读 · 0 评论 -
Mysql基础篇-09-索引增删改查
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) : 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。原创 2021-01-10 15:07:00 · 188 阅读 · 0 评论 -
Mysql基础篇-08-索引优缺点
···索引的优缺点优势: 类似大学图书馆建书索引,提高数据检索的效率,降低了数据库的IO成本通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。劣势: 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是要占空间的虽然索引大大提高了查询速度,同时也会降低更新表的速度,如对表进行insert,update和delete 因为更新表时,Mysql不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新带来的键值变化后的索引信息索引只是原创 2021-01-10 15:06:15 · 103 阅读 · 0 评论 -
Mysql基础篇-07-索引定义
索引是帮助mysql高效获取数据的数据结构 即: 索引是一种数据结构。索引的目的在于提高查询效率排好序的快速查找数据结构。原创 2021-01-10 15:05:20 · 683 阅读 · 1 评论 -
Mysql基础篇-06-视图-变量-存储过程-函数-流程控制结构
1、用户变量作用域:针对于当前连接(会话)生效位置:begin end里面,也可以放在外面set @变量名=值;或set @变量名:=值;或select @变量名:=值;②更新值方式一:set @变量名=值;或set @变量名:=值;或select @变量名:=值;方式二:select xx into @变量名 from 表;③使用select @变量名;原创 2021-01-10 14:36:36 · 157 阅读 · 0 评论 -
Mysql基础篇-05-TCL语言
set session|global transaction isolation level 隔离级别;没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete。事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行。注意:sql语句支持的是insert、update、delete。回滚到指定的地方:rollback to 回滚点名;显式事务:具有明显的开启和结束。savepoint 回滚点名;回滚:rollback;提交:commit;原创 2021-01-10 13:56:08 · 109 阅读 · 0 评论 -
Mysql基础篇-04-DDL语言
alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);alter table 表名 add【 constraint 约束名】 primary key(字段名);alter table 表名 add column 列名 类型 【first|after 字段名】;alter table 表名 add【 constraint 约束名】 unique(字段名);原创 2021-01-10 13:51:46 · 154 阅读 · 0 评论 -
Mysql基础篇-03-DML语言
insert into 表名【(字段名,…)】 values(值,…语法:delete from 表名 【where 筛选条件】【limit 条目数】语法:update 表名 set 字段=值,字段=值 【where 筛选条件】;) values(值,…insert into 表名 set 字段=值,字段=值,…delete 别名1,别名2 from 表1 别名。truncate删除后,如果再插入,标识列从1开始。truncate不可以添加筛选条件。set 字段=值,字段=值。【where 筛选条件】;原创 2021-01-10 13:09:10 · 87 阅读 · 0 评论 -
Mysql基础篇-02-DQL语言
功能:类似于java中的方法好处:提高重用性和隐藏实现细节调用:select 函数名(实参列表);原创 2021-01-10 13:03:54 · 225 阅读 · 0 评论