-
yexindonglai@163.com
2022-03-01 13:32
Mysql
109°
0
有时候,我们会发现,在远程登录数据库的时候用root用户是需要密码的,但是服务本地登录root时却不用密码,而且里面也没有我们要的数据库和表,这是为什么呢?1、我查询了mysql的user表之后才发现原因,执行sqlselect*fromuser;2、查询结果是这样的3、图中可以看到,里面竟然有5个root用户,而且有三个是没有密码的,这就明白原因了,原来我们本地服务器登录的时候使用的root用户是Host为127.0.0.1的那个root用户,4、而我们远程登录的时候使用的时候用的是host为%的root用户5、这个时候要统一登录密码咋办呢?方法也简单,只留下那个Host为%的root用户就
-
yexindonglai@163.com
2022-03-01 10:50
Mysql
46°
0
前言在执行一条sql的时候,在mysql内部都会通过以下四个流程+--------------+|连接器|+--------------+\|/+--------------+|分析器|+--------------+\|/+--------------+|优化器|+--------------+\|/+--------------+|执行器|+--------------+我们都知道索引其中一个最主要作用就是加快数据的访问,那么回表、索引覆盖、最左匹配、索引下推都是mysql的内部优化方式,部分的功能是Mysql5.6的版本上推出的,都是针对索引的优化,如果表中没有索引的情况下,那么就不会有
-
yexindonglai@163.com
2022-03-01 10:49
Mysql
39°
0
join算法驱动表和非驱动表的区别==AjoinB连表时,一定先查A表再查B表吗?==1、SimpleNested-LoopJoin,简单嵌套-无索引的情况2、IndexNested-LoopJoin-有索引的情况3、BlockNested-LoopJoin,joinbuffer缓冲区缓冲区大小数据量大的表和数据量小的表如何选择连接顺序细节join算法mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,简单嵌套IndexNested-LoopJoin,索引嵌套BlockNest
-
yexindonglai@163.com
2022-03-01 10:49
Mysql
38°
0
什么是分区表分区表应用场景分区表的限制2、列表分区(list分区)3、列分区4、hash分区5、秘钥分区(key分区)6、子分区添加分区分区表原理如何使用分区表注意事项什么是分区表MySQL从5.1版本开始支持分区功能,分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分,但是逻辑上仍是一个表。还没出现分区表的时候,所有的数据都是存放在一个文件里面的,如果数据量太大,查询数据时总是避免不了需要大量io操作;使用分区表后,每个分区存放不同的数据。这样不但可以减少io。还可以加快数据的访问;为了保证MySQL的性能,我们都建议mysql单表不要太大,建议是:单表
-
yexindonglai@163.com
2022-03-01 10:45
Mysql
39°
0
什么是锁?表锁行锁memorymyisam表共享读锁当前线程读,其他线程读(myisam)当前会话先读后写(myisam)当前会话程读,其他线程写(myisam)会话1给A表加读锁,会话1在查询查询其他表(myisam)只锁当前会话的读锁(readlocal)表独占写锁innodb事务的四个特征(ACID)脏读幻读不可重复读加共享锁(innodb)事务1读,其他事务也可以读(innodb)事务1读,事务2写会阻塞(innodb)事务A写会报错(innodb)加排它锁(innodb)意向共享锁意向排他锁自增锁模拟innodb死锁行锁演示完什么是锁?锁的存在是为了数据的一致性,我们都知道mysql
-
yexindonglai@163.com
2022-03-01 10:44
Mysql
47°
0
mysql参数修改参数值[mysql]参数说明字符相关连接相关(connection)日志相关(log)缓存相关(cache)innodb相关mysql参数MySQL提供了相当多的系统参数,涉及方方面面。我们可以使用show关键字来查看:showvariableslike'%autocommit%';或者showstatuslike'%xxx%';修改参数值mysql有一些参数是可以直接修改的,比如mysql的自动提交是默认开启,我们修改为关闭自动提交setautocommit=1;当然也有些系统参数不能直接修改里面的值,当我们修改时会报错,就像这样:mysql>set@@ft_max_wor
-
yexindonglai@163.com
2022-03-01 10:43
Mysql
41°
0
前言开启profilingshowprofiles查看sql执行所需时间startingcheckingpermissionsOpeningtablesSystemlockSendingdatashowwarnings查看警告信息其他用法完前言Showprofiles最大的好处是可以查看执行sql语句时各个环节的执行时间,Showprofiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。可以执行sqlselectversion();查看当前数据库版本。开启profiling启动数据库后,profiles默认是关闭的,并且开启后只存在当前会话,因为它是保存在内存中的
-
yexindonglai@163.com
2022-03-01 10:42
Mysql
45°
0
mysql执行计划mysql那三张著名的练习表执行计划中包含的信息id完mysql执行计划在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。官网地址:https://dev.mysql.com/doc/refman/5.5/en/explain-output.htmlmysql那三张著名的练习表在介绍explain执行计划之前,我们先把这三张表提前建好,一会要用到;--部门表createtabledept(deptnoi
-
yexindonglai@163.com
2022-03-01 10:40
Mysql
39°
0
前言示例前言showprocesslist命令可以看到当前正在运行的线程信息,每查询一次sql都会新建一个会话,执行完后会话自动断开。这个命令也可以用来查找sql死锁、查询慢以及cpu占用率高的是哪个条sql导致的;当系统出现死锁死后,找到对应id值,然后通过kill命令杀死正在死锁的线程以解决问题。示例如果你是普通用户,你只能查看自己执行过的线程,如果管理员用户,那么你可以查看所有的线程;接下来我们执行一条语句,因为这个表中有千万数据的,所以执行起来会有点慢,selectcount(*)fromstudent执行上面的sql后,在开启一个新窗口,用来执行showprodesslist,通过下
-
yexindonglai@163.com
2022-03-01 10:32
Mysql
45°
0
数据库连表方式准备内连接左外连接和左连接右外连接和右连接全连接完数据库连表方式内连接:inner、innerjoin外连接:outerjoin左外连接:leftouterjoin左连接:leftjoin右外连接rightouterjoin右连接:rightjoin全连接fulljoin、union准备现在有2张表,A表和B表,数据和表结构如下内连接内连接查询的是两张表的并集,也就是A表和B表都必须有数据才能查询出来;以下三个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3的数据--joinselect*fromAjoinBonA.id=B.id--innerjoinselect*