InnoDB Update�����ڲ�����
��Buffer Pool�ж�ȡ������
- InnoDB���Ȼ���Buffer Pool���ڴ��еĻ���أ��в�����Ҫ���µļ�¼��
- �����¼����Buffer Pool�У�InnoDB��Ӵ��̶�ȡ��ҳ��Buffer Pool�С�
��¼Undo Log��
- ���IJ���ǰ��InnoDB����Undo Log�м�¼��ǰ�����ݡ�
- Undo Log��������ع�����֤�����ԭ���Ժ�һ���ԡ�
- Undo Log���д���ڴ棬Ȼ���ɺ�̨�̶߳�ʱˢ�µ����̡�
��Buffer Pool�����
- InnoDB��Buffer Pool�и������ݣ������ĺ������ҳ���Ϊ����ҳ����
��¼Redo Log Buffer��
- ͬʱ��InnoDB�Ὣ�IJ���д�뵽Redo Log Buffer�С�
�ύ������
- ��ִ���������IJ����������ύ��
- InnoDB�ὫRedo Log��Bufferд����̣���֤����ij־��ԡ�
������
- InnoDB��̨�̻߳��첽�ؽ�Buffer Pool�е���ҳд����̡�
��¼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���ύ�Ĺ���
Prepare����
- SQL���ɹ�ִ�к�����redolog��д����̡���ʱ��������prepare�Ρ�
- Redolog��InnoDB�洢�����������־����¼�����ݵ������仯��
BinLog�־û���
- ��prepare��֮��MySQL�Ὣbinlog���ڴ���־��д����̡�
- Binlog��MySQL�Ķ�������־����¼�����е�DDL��DML��䣬��������ͬ�������ݻָ���
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��״̬���������ύ���ǻع����Ӷ�ȷ��������֮�������һ���ԡ�