Mysql���ݿ����

InnoDB Update�����ڲ�����

  1. ��Buffer Pool�ж�ȡ������

    • InnoDB���Ȼ���Buffer Pool���ڴ��еĻ���أ��в�����Ҫ���µļ�¼��
    • �����¼����Buffer Pool�У�InnoDB��Ӵ��̶�ȡ��ҳ��Buffer Pool�С�
  2. ��¼Undo Log��

    • ���޸IJ���ǰ��InnoDB����Undo Log�м�¼�޸�ǰ�����ݡ�
    • Undo Log��������ع�����֤�����ԭ���Ժ�һ���ԡ�
    • Undo Log���д���ڴ棬Ȼ���ɺ�̨�̶߳�ʱˢ�µ����̡�
  3. ��Buffer Pool�����

    • InnoDB��Buffer Pool�и������ݣ������޸ĺ������ҳ���Ϊ����ҳ����
  4. ��¼Redo Log Buffer��

    • ͬʱ��InnoDB�Ὣ�޸IJ���д�뵽Redo Log Buffer�С�
  5. �ύ������

    • ��ִ���������޸IJ����������ύ��
    • InnoDB�ὫRedo Log��Bufferд����̣���֤����ij־��ԡ�
  6. ������

    • InnoDB��̨�̻߳��첽�ؽ�Buffer Pool�е���ҳд����̡�
  7. ��¼Binlog��

    • ���ύ�����У�InnoDB�Ὣ�����ύ����Ϣ��¼��Binlog�С�
    • Binlog����MySQL�����Ӹ��ơ�

�����2�׶��ύ

  • 2�׶��ύ��MySQL�ڸ��¹����б�֤binlog��redologһ���Ե�һ���ֶΡ�
  • Prepare�׶���SQL�ɹ�ִ�в�����redolog��ͨ��write()д���ļ�����������ʱ������δ�ύ����redolog�Ѿ�׼���á�
  • Commit�׶����������ύʱ��MySQL�Ὣbinlog�־û�����ȷ��redologҲ���־û������̡���������ʹϵͳ������Ҳ��ͨ��redolog��binlog��֤���ݵ�һ���ԺͿɻָ��ԡ�

����MySQL�����2�׶��ύ

MySQL�����2�׶��ύ��һ���ڸ��¹����б�֤binlog����������־����redolog��������־��һ���ԵĻ��ơ���һ����ȷ�������ݵ�һ���Ժͳ־��ԣ��ر���������ͬ���ͱ����ָ��ij����С�

2�׶��ύ�Ĺ���

  1. Prepare�׶���

    • SQL���ɹ�ִ�к󣬻�����redolog��д����̡���ʱ��������prepare�׶Ρ�
    • Redolog��InnoDB�洢�����������־����¼�����ݵ������仯��
  2. BinLog�־û���

    • ��prepare�׶�֮��MySQL�Ὣbinlog���ڴ���־��д����̡�
    • Binlog��MySQL�Ķ�������־����¼�����е�DDL��DML��䣬��������ͬ�������ݻָ���
  3. Commit�׶���

    • ��binlog�־û�֮���������commit�׶Σ�ִ�������ڲ�ִ�����յ����������������redolog��״̬��

write��fsync������

  • write��������д���ļ��Ļ���������ʱ���ݲ�δ�����־û��������ϣ�������ʱ�洢���ڴ��С�
  • fsync��ǿ�ƽ��ļ����޸ij־û��������ϣ�ȷ�����ݵij־��ԡ�write��fsyncͨ�����ʹ�ã���ȷ�����ݵĿɿ��Ժͳ־��ԡ�

Ϊʲô��Ҫ2�׶��ύ

���������2�׶��ύ�����ܻ�����������⣺

  • �����д��redo log�ɹ�����binlogδд��ɹ��ͱ��������������redo log�ָ����ݣ���binlogû�м�¼��α�����������������ݲ�һ�¡�
  • �����д��binlog�ɹ�����redo logδд��ɹ��ͱ���������������redo logû�м�¼��α�����������ݻ��Ǿ�ֵ����binlog�Ѿ���¼������ͬ��ʱ�ᵼ�����ݲ�һ�¡�

2�׶��ύ��α�֤һ����

����2�׶��ύ��������ύ�������������������

  • ���һ��һ�׶��ύ���������д��redo log������prepare״̬ʱ����������ʱֱ�ӻع�����������һ�¡�
  • �������һ�׶��ύ�ɹ���д��binlog���������ʱ���binlog�е������Ƿ����������������������������ύ���񣬷���ع�����
  • �������redo log����commit״̬ʱ��������������ͬ�������

ͨ��2�׶��ύ��MySQLȷ����binlog��redo log��һ���ԣ��Ӷ���֤�����ݵ�һ���Ժͳ־��ԡ��ڱ����ָ�ʱ�����Ը���binlog��redo log��״̬���������ύ���ǻع����񣬴Ӷ�ȷ��������֮�������һ���ԡ�

 wechat
天生我才必有用