2019年8月20日成长题目
如何查看数据库是否全表扫描?
sql的执行计划。
执行计划是什么?
执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在MySQL中使用 explain 关键字来查看。
mysql的主从复制怎么配置的
Mysql 主从复制配置
主数据库:192.168.1.1
从数据库:192.168.1.2
注意事项
确保主数据库的mysql能够给外网访问,也就是使用Navicat等软件能够连接的上才行。如果使用宝塔就要到端口那里放行3306端口
主数据库配置:
1. 创建一个用户
GRANT REPLICATION SLAVE,FILE ON *.* TO 'mstest'@'192.168.1.2' IDENTIFIED BY '123456';
192.168.1.2:是运行使用该用户的ip地址
mstest:是新创建的用户名
123456:是新创建的用户名的密码
2. 修改mysql的配置文件,my.cnf(window系统时my.ini)
server-id=1
binlog-do-db=czc #这个是需要同步的数据库 ,czc是一个数据库,自行先创建
完成后输入命令show master status查看一下是否成功
从数据库配置:
如果mysql的版本大于5.5
打开mysql.in添加下面值
server-id=2
master-host=192.168.1.1 //主数据库的ip
master-user=mstest //第一步创建账号的用户名
master-password=123456 //第一步创建账号的密码
master-port=3306
master-connect-retry=60
replicate-do-db=czc //要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名
mysql的版本小于5.5
打开mysql.ini添加一个server_id,随便写一个不重复的id
因为小于5.5的不能使用直接配置的方法,只能采用命令行的方式配置
CHANGE MASTER TO MASTER_HOST='118.25.2437.342',MASTER_PORT=3306,MASTER_USER='mstest',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000015',MASTER_LOG_POS=606;
这里的参数都是对照主数据库的信息填写的
slave start;
show slave status\G;
看这几项是否出现,出现表示成功了。可自行在主数据库里面添加修改数据测试
分布式锁解决并发的三种实现方式
-
在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同 一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案:
分布式锁一般有三种实现方式:
- 1、 数据库锁
- 2、基于Redis的分布式锁
- 3、基于ZooKeeper的分布式锁