随笔分类 - mysql
记录mysql相关内容
摘要:mysql复制的最小单位是event,而不是一条一条的SQL语句。(binlog_format一定为row,否则主从数据可能会不一致。其实哪怕为row格式了,也可能不一致。) 为了保障数据一致性必须设置的参数: sync_binlog=1 innodb_flush_log_at_trx_commit
阅读全文
摘要:锁是一种很珍贵的资源。锁一定是并发场景下才会出现的。 保证数据的隔离性,一致性。 1.latch 这个锁存在于内存中,用来控制并发访问的,保护的是内存数据结构。他锁住的是并发资源。就是临界区。 就是java和golang中的mutex。 他加锁的对象是线程。持续时间是临界时间。只有读写锁和互斥量。并
阅读全文
摘要:涉及的内容很多,慢慢写。 1.ACID 原子性 atomicity redo有关 一致性 consistency undo有关 隔离性 isolation lock有关(mysql中只有可串行化能保障,哪怕是rr也不能完全保障隔离性) 持久性 durable redo + undo有关 2.脏读,不
阅读全文
摘要:1.Double write 这个特性,主要是为了保证数据的持久性或者说是可靠性。 为什么会有这个特性的出现。主要的原因是。内存中,最小的单元是什么?bit,0和1。但是磁盘上哪?对于MySQL来说,是页。 也就是说,在往磁盘中写数据的时候,如果一个16k的页,你写到8k的时候,掉电了,或者mysq
阅读全文
摘要:checkpoint机制,主要干的事情就是把脏页刷新到磁盘。 数据库只能保证最终一致性。你在数据库运行的时候,磁盘上的数据和内存中的数据不一致太正常了。 另外checkpoint也能保证数据库在挂了,或者出事了之后,缩短他的恢复时间。这个很好理解,MySQL有redo和binlog去保证事务的持久性
阅读全文
摘要:查看线程: 在performation_schema下,有一个threads表。 首先是IO线程 控制参数是innodb_write_io_threads。整个16应该没问题。 而innodb_read_io_threads,就不用动了,write是异步的,read是同步的。 page_cleane
阅读全文
摘要:参数:innodb_buffer_pool_size。我们线上基本上设置50-75%。设过80,发现OOM有点严重。 不过这个值肯定是越大,性能越好。 如何在缓冲池中标记一个页? (space,page_num) space指的是你ibd文件的编号。在information_shcema中 inno
阅读全文
摘要:记录下MySQL的表空间。 在MySQL官方文档中,很多行(row)记录在页(page)中,页记录在区(extent)中,区记录在段(segment)中,段则在表空间中。表空间就是tablespace。 其中,区是最小的空间申请单位,通常一次性申请4个区。区的固定大小是1M。以MySQL默认的16k
阅读全文
摘要:之前说了磁盘的压测。也就顺便记录下MySQL的压测。 show global status like '%Question%';这是一个累加的值。记录MySQL启动到现在的查询数。 show global status like '%Uptime%';累加值,记录MySQL启动的秒数。 直接stat
阅读全文
摘要:记录一下用iostat对磁盘进行的测试。 测试用例:iostat -xm 3 结果的上半部分是cpu的平均数据。 通常是user所占的cpu会多一点。 %idle表示cpu空闲时间。 device表示目前的设备。 rrqm/s 每秒发起合并读的请求。每秒这个设备相关的读取请求有多少被Merge了(当
阅读全文
摘要:前几个月遇见了一个线上故障。 在mysql drop了一张大表后,空间竟然没有释放。从占用的空间来看,drop此表后,磁盘占用应该会有明显的下降。 记录一下解决过程 mysql版本:5.7 1.首先ps -ef | grep mysql 拿到mysql的pid 2.然后lsof -p `pid of
阅读全文