***explain ****分析******* 1观察,至少跑一天,看看生产的慢SQL情况 2开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来 3explain+慢SQL分析 4show profile 5运维经理 or DBA,进行SQL数据库服务器的参数调优 *****总结***** 1慢查询的开启并捕获 2explain+慢SQL分析 3show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况 4SQL数据库服务器的参数调优 *********...
复制原理 1. master将数据写到binlog中。
2. slave开启两个线程I/O thread和SQL thread。
3. slave的I/O thread线程连接到master,读取master上的binlog文件名称及binlog的position位置。
4. slave通过I/O thread接收master的变更信息,写入到relay log(中继日志)中。
5. 通过SQL thread读取Relay log信息进行重放到slave中。
复制解决了什么?
个人认为复制主要作用是:
1. 备份作用,备库是主库的一个备份。
2. 读写分离,主库...
接触mysql有一年多了,但是始终是一个偶尔用用的状态,对其原理性的东西研究不够,在不少mysql相关的暑假中提到mysql体系结构,很清楚解析了mysql的各个模块分层和主要功能特性,在理解此功能特性后,会刚好的帮助我们学习mysql数据库。一 Mysql体系结构总览650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108034418103.jpg" title="mysql体系结构.jpg" /> 在上面的体系结构图中,我们可以对其进行分层研...
行级锁有三种模式:innodb 行级锁 record-level lock大致有三种:record lock, gap lock and Next-KeyLocks。record lock 锁住某一行记录 gap lock 锁住某一段范围中的记录 next key lock 是前两者效果的叠加。 问题:行级锁表现形式:next-key lock错误码: 1213Deadlock found when trying to get lock; try restarting transaction,重点在于:Deadlock FOUND WHEN trying TO get LOCK; 表示行级锁冲突解决:解决方案,可能...
1、日常关注点的问题2、日志点分析3、checkpoint:脏页刷盘的检查点4、模糊检查点发生条件 1、master thread checkpoint 2、flush_lru_list checkpoint 3、async/sync flush checkpoint 4、dirty page too much checkpoint一、日常关注的问题 1、我们的日志生成速度? 1、每天生成多少日志、产生多少redo logmysql> show global status like ‘Innodb_os_log_written‘;
+-----------------------+--------+
| Vari...
1.MySQL主从复制入门首先,我们看一个图:影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。 MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。 那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复制,即MYSQL replication。 在上面的模型中,MYSQL-A就是主服务器,...
案例描述:一个普通的事务提交,在应用里面会提示commit超时,失败。一、理论知识1、关于commit原理,事务提交过程 1、寻找修改的数据页: 1、如果该数据页在内存中,则直接是内存读; 2、如果该数据页内存中没有,物理读,就从磁盘调入内存; 2、磁盘中的undo页调入内存; 3、先将原来的数据存入undo,然后修改数据(数据页成脏页); 4、修改数据的信息生成redo数据存入log_buffer(内存buffer_pool的一个...
前端时间跟一个DB相关的项目,alanc反馈有一个查询,使用索引比不使用索引慢很多倍,有点毁三观。所以跟进了一下,用explain,看了看2个查询不同的结果。 不用索引的查询的时候结果如下,实际查询中速度比较块。 复制代码 代码如下:mysql> explain select * from rosterusers limit 10000,3 ; +----+-------------+-------------+------+---------------+------+---------+------+---------+-------+ | id | select_type | table |...
原文:MySQL Insert语句单个批次数量过多导致的CPU性能问题分析【问题】最近有台服务器比较频繁的CPU报警,表现的特征有CPU sys占比偏高,大量慢查询,大量并发线程堆积。后面开发对insert的相关业务限流后,服务器性能恢复正常。 【异常期间线程处理情况】下图是当时生产环境异常时抓取的信息,该事务正在执行insert,已经执行5秒,线程运行在innodb内核,状态是thread declared inside InnoDB,还有4906 tickets可用 统计了下有64...
1 环境说明接上篇环境 《Mycat学习笔记》 第一篇. MySql 读写分离与日志分析——主从单结点 http://www.cnblogs.com/kaye0110/p/5134588.html增加一套 mysql 实例,端口为3308 ,通过Binlog方式同步主机情况localhost : 3306 主机, 在mycat 中配置为 writehost 1localhost : 3307 从机 a ,在mycat 中配置为 readhostlocalhost : 3308 从机 b ,在mycat 中配置为 writehost 2 2 MyCat 配置基本配置参考上篇,差异在于 ...
使用SQL中的UPDATE关键字更新多个字段值时,SET后面的更新字段应该使用逗号而不能用AND。虽然用AND不会报错,但会使更新结果错误,下面我将通过场景来分析当我们使用AND时SQL的执行过程和为什么更新结果只会是0/1/NULL;场景示例以下是场景更新前的原始查询数据如下:更新场景1更新场景2更新场景3 更新场景4 更新场景5更新场景6 问题发现为什么结果都为0或者为1或者为Null呢?是不是有什么规律?总结分析 涉及到两个知识点(1)当我...
关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可...
性能瓶颈:慢、写速度比读速度慢很多 主要的性能指标:访问频度,并发连接量,缓存命中率,index使用,slow log开启与分析,query Log,查询logThreads_cached:连接线程缓存是否开启 -> ON thread_cache_size :线程缓存数的大小 query_cache_size: 查询缓存大小 join_buffer_size :join buffer大小 tmp_table_size : tmp table 的大小 (> 16M) max_heap_table_size: 最大堆表大小 (> 16M) thread_cache...
一、mysql query optimizer1. mysql 中有专门负责优化 select 语句的优化器模块,主要功能:通过计算分析系统中收集的统计信息,为客户端的 Query 提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)2. 当客户端想 mysql 请求一条 Query ,命令解析器模块完成分类,区别出是 select 并转发给mysql query optimizer时,mysql query optimizer 首先会对整条 query 进行优化,处理掉...
mysql中null值的排序问题分析 如下表t_user: name agezhangsan 1lisi NULLwangwu 2 www.2cto.com 执行一下sql: Sql代码 select * from t_user order by age; name agelisi NULLzhangsan 1wangwu 2 实际上我们是想将没有填写age的记录放在最后,我们可以 Sql代码 select * from t_user order by age is null, age; name agezhangsan 1wangwu 2lisi NULL 为什么会这样?可以这样来理解: Sql代码 select * from t_user or...