锁的相关操作
show open tables;
lock table tb_item read ,tb_content WRITE;
UNLOCK TABLES;
order by发送filesort的对应策略
1,给order by字段添加索引
2,调高sort_buffer 使得能够将数据一次性都读进buffer,过小会导致溢写到很多tmp文件到磁盘
3,调高max_length_for_sort_data 大小
查看表状态
show status like 'table%'
如果索引使用不当,可能导致行锁变表锁,比如:在更新索引字段为string但在传参时传入的是int类型,则会导致行锁变表锁
当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(GAP LOCK)
锁定具体一行
select * from tb_user u where u.id=9 for update;
提交以后会自动释放锁
查看数据的默认隔离级别
show VARIABLES like 'tx_isolation'
对索引的误操作可能导致表锁
查看性能
show profiles
查看指定行的性能
show profile cpu ,block io for query 18
查看innodb 锁的详情
show status like 'innodb_row_lock%';
mysql主从复制
master配置
slave 配置上
授权给一个用户让其可以从master上复制数据
GRANT replication SLAVE on *.* TO 'zhangsan'@'从机器数据库ip' IDENTIFIED by '1234'
查看master数据的状态
show MASTER status;
根据上面的数据配置slave
GRANT MASTER TO MASTER_HOST='192.168.43.12',
MASTER_USER='zhangsan',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysqlbin.00035',
MASTER_LOG_POS=323
启动slave
start slave
查看slave状态
show slave status;
slave_io_running和slave_sql_running 必须为yes,否则还是配置失败
停止从数据库
stop slave
GRANT replication SLAVE on *.* TO 'zhangsan'@'从机器数据库ip' IDENTIFIED by '1234'