�@�O��u��27�� �g�����U�N�V�����̈�ѐ���ۏ��郍�b�N�v�́A�g�����U�N�V������4�̕������x���̐��������܂����B����́A���̕������x������������f�[�^�x�[�X�T�[�o�̃��b�N�@�\�ɐG��Ă݂܂��傤�B���ۂɂǂ̂悤�Ȏd�g�݂Ńf�[�^�x�[�X�T�[�o�����b�N������s���Ă��邩�𗝉����邱�ƂŁA�g�����U�N�V�����@�\�𗘗p�����ۂɋN����₷�����_���A���炩���ߗ\���ł���悤�ɂȂ�Ǝv���܂��B
�@����́A���߂ɁA���b�N�̏�Ԃ��擾����V�X�e���X�g�A�h�v���V�[�W���usp_lock�v�̒�`����g�������usp_lock_detail�v�X�g�A�h�v���V�[�W�����쐬���܂��傤�B
����o�ꂷ��g�����U�N�V�����̃R�}���h�Q�́ASQL Server 2000���ނɉ�����Ă��܂�
�@���b�N�̏�Ԃׂ邽�߂ɁASQL Server Enterprise Manager�𗘗p������@������܂ł̘A�ڂŏЉ�Ă��܂����B�������A���b�N�̏�Ԃ��m�F����ɂ́A����u���݂̗��p�v�Łu�ŐV�̏�ԂɍX�V�v�����{����K�v������A��Ԃ��|����܂��B
�@�����������邽�߂̕X��Ƃ��āAsp_lock�Ƃ����V�X�e���X�g�A�h�v���V�[�W���𗘗p������@������܂����A�f�[�^�x�[�X���ƃe�[�u������ID�ŕ\������邽�߁A���ʂ����ɂ����Ƃ������_������܂��B
�@���̔��ʂ̂��ɂ�����������邽�߁Asp_lock�V�X�e���X�g�A�h�v���V�[�W�����g�����Ă݂܂��傤�B�N�G���A�i���C�U��莟��SQL�������s���āAsp_lock_detail�X�g�A�h�v���V�[�W�����쐬���Ă݂܂��傤�B
�y���1�z
1 CREATE PROCEDURE sp_lock_detail 2 �@@spid1 int = NULL, �@�@�@/* server process id to check for locks */ 3 �@@spid2 int = NULL �@�@�@ /* other process id to check for locks */ 4 AS 5 6 SET NOCOUNT ON 7 /* 8 ** Show the locks for both parameters. 9 */ 10 IF @spid1 IS NOT NULL 11 BEGIN 12 �@SELECT CONVERT (SMALLINT, req_spid) AS spid, 13 �@�@�@�@�@�@db_name(rsc_dbid) AS dbid, 14 �@�@�@�@�@�@object_name(rsc_objid) AS ObjId, 15 �@�@�@�@�@�@rsc_indid AS IndId, 16 �@�@�@�@�@�@SUBSTRING (v.name, 1, 4) AS Type, 17 �@�@�@�@�@�@SUBSTRING (rsc_text, 1, 16) AS Resource, 18 �@�@�@�@�@�@SUBSTRING (u.name, 1, 8) AS Mode, 19 �@�@�@�@�@�@SUBSTRING (x.name, 1, 5) AS Status 20 21 �@FROM master.dbo.syslockinfo, 22 �@ master.dbo.spt_values v, 23 �@ master.dbo.spt_values x, 24 �@ master.dbo.spt_values u 25 26 �@WHERE master.dbo.syslockinfo.rsc_type = v.number 27 �@ �@ and v.type = 'LR' 28 �@ �@ and master.dbo.syslockinfo.req_status = x.number 29 �@ �@ and x.type = 'LS' 30 �@ �@ and master.dbo.syslockinfo.req_mode + 1 = u.number 31 �@ �@ and u.type = 'L' 32 33 �@ �@ and req_spid in (@spid1, @spid2) 34 END 35 36 /* 37 ** No parameters, so show all the locks. 38 */ 39 ELSE 40 BEGIN 41 �@SELECT CONVERT (SMALLINT, req_spid) AS spid, 42 �@ db_name(rsc_dbid) AS dbid, 43 �@ object_name(rsc_objid) AS ObjId, 44 �@ rsc_indid AS IndId, 45 �@ SUBSTRING (v.name, 1, 4) AS Type, 46 �@ SUBSTRING (rsc_text, 1, 16) AS Resource, 47 �@ SUBSTRING (u.name, 1, 8) AS Mode, 48 �@ SUBSTRING (x.name, 1, 5) AS Status 49 50 �@FROM master.dbo.syslockinfo, 51 �@ .dbo.spt_values v, 52 �@ .dbo.spt_values x, 53 �@ .dbo.spt_values u 54 55 �@WHERE master.dbo.syslockinfo.rsc_type = v.number 56 and v.type = 'LR' 57 and master.dbo.syslockinfo.req_status = x.number 58 and x.type = 'LS' 59 and master.dbo.syslockinfo.req_mode + 1 = u.number 60 and u.type = 'L' 61 �@ORDER BY spid 62 END 63 64 RETURN (0) -- sp_lock
�@���܂�sp_lock_detail�X�g�A�h�v���V�[�W�����쐬�ł��������m�F���邽�߁A�N�G���A�i���C�U����sp_lock_detail�����s���Ă݂܂��傤�B
�y���2�z
1 sp_lock_detail
�@���1�ō쐬�����X�g�A�h�v���V�[�W���̒�`�́ASQL Server�ɂ�����sp_lock�̒�`���قڂ��̂܂ܗ��p���Ă��܂��B���̃X�g�A�h�v���V�[�W���́AServer Process ID���p�����[�^�Ɏ��ꍇ�Ǝ��Ȃ��ꍇ�ő傫��2�̃u���b�N�ɕ�����Ă��܂��B�O����10�s�ڂ���34�s�ڂ̓p�����[�^�����ꍇ�A40�s�ڂ���62�s�ڂ̓p�����[�^�����Ȃ��ꍇ�ł��B���ꂼ��̃u���b�N�̒��́Amaster�f�[�^�x�[�X��syslockinfo�Ƃ������b�N���Ǘ����Ă���V�X�e���e�[�u���̏�����ɁA�������̃L�[���[�h��spt_values�Ƃ����V�X�e���e�[�u������Ƀ��b�N�A�b�v���Ă��܂��B���ɒP���ȃX�g�A�h�v���V�[�W���ł��B
�@���p��1�_�������ӂ��Ȃ��Ă͂Ȃ�Ȃ��̂��A��L�����2�̎��s���ʂ̓��b�N�I�u�W�F�N�g��2�s�Ԃ��ꂽ�͂��ł����A���ۂɃ��b�N���|�����Ă���̂�1�s�ڂ݂̂ł��B�����ɁA�������3�����s�����syslockinfo�e�[�u���ɂ�1�s���������Ă��Ȃ����Ƃ�������܂��B
�y���3�z
1 select * from master.dbo.syslockinfo
�@����́Amaster�f�[�^�x�[�X��FK_Orders_Employees�ɑ���SQL�̎��s���Ɏ����I�Ƀ��b�N���|���邽�߂ł��B���̍s�݂͖̂�������悤�ɂ��Ă��������B
�@�ł́A�{��ɓ���܂��傤�B�܂��ASELECT���ɂ����āA���b�N�̃^�C�v�������I�ɕύX����I�v�V�������g�p���āA�ǂ͈̔͂Ƀ��b�N���|���邩���m�F���Ă����܂��傤�B�ł͎������4�����s���Ă݂܂��傤�B
�y���4�z
1 BEGIN TRANSACTION 2 SELECT * FROM Customers WHERE Country = 'UK' 3 EXEC sp_lock_detail 4 ROLLBACK
�@�N�G���A�i���C�U�̌��ʃE�B���h�E�ɂ�2�̌��ʃZ�b�g�����ɕ\������Ă��܂��B�X�N���[���o�[�ʼn��̕������ǂ��sp_lock_detail�̌��ʂ��Q�Ƃ��邱�Ƃ��\�ł��B�����Ŋm�F���Ă������������̂́Asp_lock_detail�̌��ʂ�1�s�ڂł��i2�s�ڂ͖������܂��傤�j�BNorthwind�f�[�^�x�[�X�ɑ��āAMode���uS�v�ƕ\������Ă��܂��B����́A���L���b�N���Ӗ����܂��B���b�N�̃��[�h�̋L���̈Ӗ��́A���L�̂Ƃ���ł��B
�L�� | ���[�h | �Ӗ� |
---|---|---|
S | ���L | ���L���b�N���Ӗ����܂��B�ق��̃g�����U�N�V�����́A���L���b�N���|�����Ă���I�u�W�F�N�g�̓ǂݍ��݂͂ł��܂����A�X�V�͂ł��܂��� |
X | �r�� | �r�����b�N���Ӗ����܂��B�ق��̃g�����U�N�V�����́A�ǂݎ����X�V���ł��܂��� |
U | �X�V | �X�V���b�N���Ӗ����܂��B�X�V���b�N���|������A���ۂɍX�V���s���܂ł͋��L���b�N�ɂȂ�A�X�V���s������͔r�����b�N�ɕϊ�����܂��B��Ő�������f�b�h���b�N�̖h�~�ɖ𗧂��܂� |
IS | �C���e���g���L | �C���e���g���L�́A���̃��b�N���|�����Ă���I�u�W�F�N�g�������ʂ̊K�w�̈ꕔ�ŁA���L���b�N���|�����Ă��邱�Ƃ������܂��B�Ⴆ�A�e�[�u���ɑ���C���e���g���b�N���|�����Ă���ꍇ�́A�y�[�W��s�Ȃǂ̒P�ʂŃ��b�N���|�����Ă��邱�Ƃ������܂��B�ق��̃g�����U�N�V�������e�[�u�����b�N�Ȃǂ��|���悤�Ƃ����Ƃ��ɁA�P�P�̃I�u�W�F�N�g�����b�N��Ԃ��ǂ������m�F����K�v���Ȃ��Ȃ邽�߁A�p�t�H�[�}���X�����サ�܂� |
IX | �C���e���g�r�� | �C���e���g���L�Ɠ��l�A���ʂ̊K�w�̈ꕔ�ɑ��Ĕr�����b�N���|�����Ă��邱�Ƃ������܂� |
SIX | �C���e���g�r���t�����L | �C���e���g���L�̃I�v�V�����ŁA���ʂ̊K�w�̈ꕔ�ɑ��čX�V���|����\�肪���邱�Ƃ������܂� |
�\1�@���b�N���[�h�L�� |
�@�܂��AType��ɂ́uDB�v�ƕ\������Ă���A���L���b�N���f�[�^�x�[�X�ɑ��Ċ|�����Ă��邱�Ƃ�������܂��BType��ɕ\�������ق��̃^�C�v�́A���L�̂Ƃ���ł��B
�L�� | �Ώ� | ���� |
---|---|---|
RID | RID | �s���ʎq�B�e�[�u���� 1�s�����b�N���邽�߂Ɏg�p |
KEY | �L�[ | �C���f�b�N�X���̃L�[�͈̔́B���\�g�����U�N�V�����ōs���b�N���s���ꍇ�Ɏg�p |
PAG | �y�[�W | 8Kbyte�̃f�[�^�y�[�W�܂��̓C���f�b�N�X�y�[�W |
EXT | �G�N�X�e���g | 8�̃f�[�^�y�[�W�܂��̓C���f�b�N�X�y�[�W�̘A���I�ȏW�� |
TAB | �e�[�u�� | ���ׂẴf�[�^�ƃC���f�b�N�X���܂ރe�[�u���S�� |
DB | DB | �f�[�^�x�[�X�S�� |
�\2�@Type��i���̂ق��̃^�C�v�j |
�@�ł́A���̗��ŁA���b�N���[�h�������I�ɕύX���Ă݂܂��傤�B
�y���5�z
1 BEGIN TRANSACTION 2 SELECT * FROM Customers WITH (HOLDLOCK) WHERE Country = 'UK' 3 EXEC sp_lock_detail 4 ROLLBACK
�@ FROM��Ŏw�肷��e�[�u���ɁuWITH��v�𗘗p�����b�N�I�v�V�������w�肵�܂��B����́AWITH (HOLDLOCK)�Ƃ����I�v�V�������w�肵�āACustomers�e�[�u���ɑ���HOLDLOCK���|����w������܂����BHOLDLOCK�́A�O��������SERIALIZABLE�g�����U�N�V�����������x���Ɠ��l�Ȍ��ʂ����܂��B
�@SERIALIZABLE�g�����U�N�V�����������x���͈�ԕ������x���������g�����U�N�V�����^�C�v�ŁA�ق��̓����I�u�W�F�N�g�𗘗p����g�����U�N�V���������s���Ď��s�����̂�h�~���܂��B���̂��߁AHOLDLOCK�ɂ����郍�b�N��SELECT���ɑ��Ďw�肳���ƁA�g�����U�N�V��������������܂Ŏw�肳�ꂽ�I�u�W�F�N�g�̃��b�N���������܂��B
�@��L�����4�ɂ����ẮACustomers�e�[�u���̃C���e���g���L���b�N�A6�̃L�[�ɂ����郌���W���L���b�N���|�����Ă��邱�Ƃ�������܂��BHOLDLOCK�̂ق��Ɏw��\�ȃg�����U�N�V�����������x���Ƌ��ʂ̃��b�N�I�v�V�����́A�ȉ��̂Ƃ���ł��B
���b�N�̃I�v�V���� | ���� |
---|---|
NOLOCKREADUNCOMMITED SELECT | �X�e�[�g�����g�ɂ����K�p�����A���b�N������I�v�V�����ł��B�w�肵���e�[�u���ɂ́A���L���b�N���|�����A�ق��̃g�����U�N�V�������r�����b�N���|���Ă���ꍇ���W�Ȃ��ǂݍ��݂����s���܂��B����āA�R�~�b�g����Ă��Ȃ��g�����U�N�V������ǂݍ���A�ǂݎ��̓r���Ńy�[�W�����[���o�b�N���ꂽ�肷��\��������܂��B�܂�A�_�[�e�B���[�h���\�ȃ��[�h�ł� |
READCOMMITTED | READ COMMITTED �̕������x���œ��삷�郍�b�N�I�v�V�����ł��BSQL Server �̃f�t�H���g�̃��b�N���x���ł� |
REPEATABLEREAD | REPEATABLE READ �̕������x���œ��삷�郍�b�N�I�v�V�����ł� |
SERIALIZABLE�AHOLDLOCK | ���b�N�������ɉ�������̂ł͂Ȃ��A�g�����U�N�V�����̊������܂ŕێ����郍�b�N�I�v�V�����ł��BHOLDLOCK��SERIALIZABLE�͓����ł� |
�\3�@�g�����U�N�V�����������x���Ƌ��ʂ̃��b�N�I�v�V���� |
�@���ɁA���b�N���|����͈͂��w�肵�Ă݂܂��傤�B���̗��ł́A�e�[�u���ɑ���HOLDLOCK���w�肵�Ă݂܂��B
�y���6�z
1 BEGIN TRANSACTION 2 SELECT * FROM Customers WITH (TABLOCK, HOLDLOCK) 3 WHERE Country = 'UK' 4 EXEC sp_lock_detail 5 ROLLBACK
�@��قǂ����5�ɂ����ẮACustomers�e�[�u���ɑ��Ă̓C���e���g���L���b�N�݂̂��|�����Ă��܂������A���x�́ACustomers�e�[�u���ɑ��ċ��L���b�N���|�����Ă��邱�Ƃ�������܂��BCustomers�e�[�u���ɑ��ẮA�ق��̃g�����U�N�V��������r�����b�N���|�����Ȃ�̂ŁA�X�V�ł��Ȃ���ԂƂȂ�܂��B
�@���6�ɂ����ẮAWITH(TABLOCK, HOLDLOCK)�Ƃ���WITH���Customers�e�[�u���ɑ��ĕt�^���܂����BTABLOCK�Ƃ����I�v�V�������A�e�[�u���ɑ��郍�b�N���w�肷�邱�Ƃ��Ӗ����܂��B���b�N�͈̔͂��w�肷��I�v�V�����ƁA���b�N�̃^�C�v���w�肷��I�v�V�����́A��L��WITH��̂悤�ɕ����w�肷�邱�Ƃ��\�ł��B
�@�e�[�u���ȊO�̃��b�N�͈͂��w�肷��I�v�V�����́A���L�̂Ƃ���ł��B
���b�N�̃I�v�V���� | ���� |
---|---|
ROWLOCK | �s�P�ʂ̃��b�N |
PAGLOCK | �y�[�W�P�ʂ̃��b�N |
TABLOCK | �e�[�u���P�ʂ̃��b�N |
�\4�@�e�[�u���ȊO�̃��b�N�͈͎w�� |
�@��L�ȊO�̎w��\�ȃ��b�N�̃I�v�V�����́A���L�̂Ƃ���ł��B
���b�N�̃I�v�V���� | ���� |
---|---|
READPAST | ���b�N���ꂽ�s���X�L�b�v���܂��BSELECT �X�e�[�g�����g�ɂ����K�p�\�ł� |
UPDLOCK | �e�[�u���̓ǂݏo���̊ԁA���L���b�N�̑���ɍX�V���b�N���g�p���܂��B�X�V���b�N�́A�f�[�^��ǂ�A�g�����U�N�V�������I������܂ł̊ԁA�ق��̃��[�U�[���f�[�^���Q�Ƃ��邱�Ƃ͉\�ł����A�X�V���邱�Ƃ͂ł��܂���B�ʏ�̍X�V�n�̃g�����U�N�V�����̏ꍇ�͔r�����b�N���|�����邽�߁A�ق��̃g�����U�N�V��������͓ǂݎ�邱�Ƃ��ł��Ȃ��Ȃ�܂��iNOLOCK�̏ꍇ�ȊO�j�B�Q�ƃ��b�N�Ɣr�����b�N�����Ɏg�������邱�ƂŁA�������s���\���グ�邱�Ƃ��\�ȃI�v�V�����ł� |
XLOCK | �r�����b�N�������I�Ɏg�p���܂��BPAGLOCK�����TABLOCK�ƕ����Ďw��ł��܂� |
TABLOCKX | �e�[�u���P�ʂ̔r�����b�N�BWITH�iTABLOCK, XLOCK�j�Ɠ��� |
�\5�@���̂ق��̃��b�N�I�v�V���� |
�@���5�����6��WITH�i�D�D�D�j�̕�������L�̃I�v�V�����ɕύX����A���낢��ȃ��b�N�I�v�V�����̓���������邱�Ƃ��\�ł��B���Ў����Ă݂Ă��������B
�@���āA��قǁuCustomers�e�[�u���ɋ��L���b�N������Ă���ƁA�ق��̃g�����U�N�V�����͔r�����b�N���|�����Ȃ��v�Ƃ����b�����܂������A�ق��̃��b�N�̏ꍇ�͂ǂ̂悤�ɂȂ�̂ł��傤���B���̃}�g���N�X�����ׂẴp�^�[���ł��B�����łɊ|�����Ă��郂�[�h�A�c���ꂩ��|���悤�Ƃ��郂�[�h�ł��B
�@�e�[�u����s�ɑ��ăC���e���g���L���ݒ肳��Ă���ꍇ�́A�r�����b�N���擾���邱�Ƃ͂ł��܂��A�ق��̃��b�N�̎擾�͉\�ł��B���l�ɁA���L���b�N���ݒ肳��Ă���ꍇ�́A�C���e���g���܂ޔr���n�̃��b�N�̎擾���ł��܂���B�X�V���b�N���|�����Ă���ꍇ�ɂ́A���L�n�̃��b�N�̂ݎ擾���邱�Ƃ��\�ł��B�C���e���g�r���̏ꍇ�́A�C���e���g���L�̂ݎ擾���\�ł��B�r�����b�N���|�����Ă���ꍇ�́A�����Ȃ郍�b�N���擾���ł��܂���B
�@ | ���łɊ|�����Ă��郂�[�h | |||||
---|---|---|---|---|---|---|
�v�����郂�[�h | IS | S | U | IX | SIX | �~ |
�C���e���g���L(IS) | �� | �� | �� | �� | �� | �~ |
���L (S) | �� | �� | �� | �~ | �~ | �~ |
�X�V (U) | �� | �� | �~ | �~ | �~ | �~ |
�C���e���g�r�� (IX) | �� | �~ | �~ | �� | �~ | �~ |
�C���e���g�r���t�����L (SIX) | �� | �~ | �~ | �~ | �~ | �~ |
�r�� (X) | �~ | �~ | �~ | �~ | �~ | �~ |
�\6�@���[�h�ɂ���ă��b�N���������� |
�@���b�N����ɂ����āA����1�l���Ă����Ȃ��Ă͂Ȃ�Ȃ��̂��A�f�b�h���b�N�ł��B�f�b�h���b�N�Ƃ́A2�̃g�����U�N�V�������݂��̃��b�N����荇���A�Ƃ����ł��B�Ⴆ�A�ڋq�}�X�^�����e�i���X�̃g�����U�N�V�������A�ڋq�}�X�^�Ɖ�Ѓ}�X�^�����̏��Ԃœ����ɍX�V���悤�Ƃ��܂��B
�@����A�V�X�e���̃g�����U�N�V�������A������Ѓ}�X�^�ƌڋq�}�X�^�����̏��ԂōX�V���悤�Ƃ��܂��B�ʏ�A����炪�����Ɏ��s����邱�Ƃ͂Ȃ����ߖ��ɂȂ�܂��A���܂��܁A����2�̃g�����U�N�V�����������Ɏ��s���J�n����ƁA���̂悤�ȏɊׂ�܂��B
�@���̏�ԂɂȂ�ƁA��L�̃X�e�b�v3��4�ŁA���ꂼ�ꑊ��̃g�����U�N�V�������I������̂�҂��������߁A���ɂȂ��Ă��g�����U�N�V�������I�����܂���B������A�f�b�h���b�N�̏�ԂƌĂт܂��B�f�[�^�x�[�X�T�[�o�ɂƂ��ẮA����͒v���I�ʼn��s�\�ȏ�Ԃł��邽�߁A�f�[�^�x�[�X�T�[�o�̓f�b�h���b�N�����m���āA�����I�Ƀ��[���o�b�N�A�������̓��g���C�����邽�߂̎d�g�݂������Ă��܂��B
�@SQL Server�́A��莞�ԃ��b�N������҂��Ă���g�����U�N�V���������m���A�f�b�h���b�N�Ɋׂ��Ă��Ȃ����ۂ����`�F�b�N������@�ŁA�f�b�h���b�N��������܂��B�������A�f�b�h���b�N�͏�L�̗�̂悤�ɁA�����I�u�W�F�N�g���Ⴄ���ԂŃ��b�N���|����ꍇ�ɔ������܂��B���̂��߁A�\�Ȍ���v���_�ŃI�u�W�F�N�g�ɑ��ă��b�N���|���鏇�Ԃ����߂Ă������ƂŁA�f�b�h���b�N�͗e�Ղɉ�����\�ƂȂ�܂��B
�@ ��3�N�Ԃɂ킽�钷���E�s����̘A�ڂƂȂ��Ă��܂��܂������A�悤�₭SQL����ʂ�J�o�[���邱�Ƃ��ł��܂����B����ɂāA�{�A�ڂ͏I�������Ă��������܂��B�����ǁA�{���ɂ��肪�Ƃ��������܂����B�f�[�^�X�g�A�̐��E�́A����A���XML�Ƃ̐e�a���������Ȃ�A�I�u�W�F�N�g�̃X�g�A���e�ՂɂȂ�������ɂ���Ǝv���܂��B
�@�����āASQL���܂��AXQuery�Ƃ���XML�Ή��̃N�G���Ɏ���̕������͌������Ă��܂��B����͂���ŁA���ɖʔ�������ɂȂ��Ă������̂��ƁA���Ɋ��҂�x�点�Ă��܂��B
�@�������A�I�u�W�F�N�g�w����������O�ɂȂ������܂̎���ɂȂ��ď��߂ĕ����邱�Ƃ́A����ɗ���Ă�����͓̂������Ƃ������Ƃł��B�����āARDBMS�ƃf�[�^�w���Ƃ����l�������A�ǂꂾ���l�Ԃ̊��o�ƃ}�b�`���Ă������Ƃ������Ƃ��A�ɐɊ����܂��B�P�Ȃ�SQL�Ƃ���1�̌���Ƃ��ĂƂ炦��̂ł͂Ȃ��A���̍���ɗ���Ă�����̂��A�����ł������Ă����������Ƃ�������Ɍ��h�ł��B
�����ǂ��肪�Ƃ��������܂���
Copyright © ITmedia, Inc. All Rights Reserved.