Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DBAが開発チームによく聞きかれること3選+1 MySQLCasualFukuoka Vol.7
Search
Takayuki Honda
August 09, 2018
1.8k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DBAが開発チームによく聞きかれること3選+1 MySQLCasualFukuoka Vol.7
Takayuki Honda
August 09, 2018
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
How to build a perfect <img>
jonoalderson
1
5.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
It's Worth the Effort
3n
188
29k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Transcript
%#"͕։ൃνʔϜʹΑ ͘ฉ͖͔ΕΔ͜ͱબ .Z42-$BTVBM5BMLTJO'VLVPLB7PM 5BLBZVLJ)POEB !WJEBJTVLJ
ࣗݾհ w 5BLBZVLJ)POEB !WJEBJTVLJ w ͷࣾͰ%#"ͬͯ·͢ w .Z/"ձͰ-5ਓһ͕Γͳ͍ͱͷΛฉ͖ɺ͍ͰࢀՃ͠·͠ ͨ
w -5ॳΊͯͰ͕͢ποίϛͲΜͲΜ͓ئ͍͠·͢ ?@?ʢެ։ ͢Δ࣌ॹͰ͠·͢ʣ
ࠓͷ͓ wҰલ͘Β͍ʹࠓͷձࣾʹ དྷͯΑ͘ฉ͔Εͨࣄͱରॲ ͨ͠ࣄΛͭΒͭΒͱ͠· ͢ɻ
σουϩοΫ͕ͨ͘͞Μൃੜ͢Δ ΜͰ͚͢Ͳɾɾ
αϯϓϧςʔϒϧ $3&"5&5"#-&AVTFS@UBCMFA A64&3@*%ACJHJOU /05/6--"650@*/$3&.&/5 A130+&$5@$0%&ACJHJOU /05/6--
A$6450.&3@*%ACJHJOU /05/6-- A$0..&/5AWBSDIBS $0--"5&VUGNC@CJO 13*."3:,&: A64&3@*%A 6/*26&,&:A6,@1&0+&$5@$0%&@$6450.&3@*%A A130+&$5@$0%&A A$6450.&3@*%A &/(*/&*OOP%#%&'"6-5$)"34&5VUGNC$0--"5&VUGNC@CJO ˡ͕͜͜6/*26&ɹ,&:
αϯϓϧσʔλ 64&3@*% 130+&$5@$0%& $6450.&3@*% $0..&/5 IPHF
IPHF IPHF IPHF
͜͜ʹσʔλΛೖΕ͍ͨ 64&3@*% 130+&$5@$0%& $6450.&3@*% $0..&/5 IPHF
IPHF GVHB IPHF IPHF
༷ #&(*/ 61%"5&VTFS@UBCMF4&5$0..&/5GVHB8)&3&130+&$5@$0%& "/%$6450.&3@*% 2VFSZ0, SPXTB⒎FDUFE TFD
3PXTNBUDIFE$IBOHFE8BSOJOHT 6QEBUFͯ݅ͩͬͨ͠߹*OTFSU */4&35*/50VTFS@UBCMF 130+&$5@$0%& $6450.&3@*% $0..&/5 7"-6&4 GVHB $0..*5
6QEBUF͕ۭৼΔͱΪϟοϓϩοΫΛऔΔ 59 #&(*/ 61%"5&VTFS@UBCMF4&5$0..&/5GVHB8)&3&130+&$5@$0%&"/%$6450.&3@*% 2VFSZ0, SPXTB⒎FDUFE TFD
3PXTNBUDIFE$IBOHFE8BSOJOHT mysql> SELECT * FROM performance_schema.data_locks\G; *************************** 1. row *************************** ENGINE: INNODB ENGINE_LOCK_ID: 2098:1064 ENGINE_TRANSACTION_ID: 2098 THREAD_ID: 48 EVENT_ID: 72 OBJECT_SCHEMA: honda OBJECT_NAME: user_table PARTITION_NAME: NULL SUBPARTITION_NAME: NULL INDEX_NAME: NULL OBJECT_INSTANCE_BEGIN: 140578507493192 LOCK_TYPE: TABLE LOCK_MODE: IX LOCK_STATUS: GRANTED LOCK_DATA: NULL *************************** 2. row *************************** ENGINE: INNODB ENGINE_LOCK_ID: 2098:3:5:4 ENGINE_TRANSACTION_ID: 2098 THREAD_ID: 48 EVENT_ID: 72 OBJECT_SCHEMA: honda OBJECT_NAME: user_table PARTITION_NAME: NULL SUBPARTITION_NAME: NULL INDEX_NAME: UK_PEOJECT_CODE_CUSTOMER_ID OBJECT_INSTANCE_BEGIN: 140578507490152 LOCK_TYPE: RECORD LOCK_MODE: X,GAP LOCK_STATUS: GRANTED LOCK_DATA: 100, 100020 2 rows in set (0.00 sec) -0$,@.0%&9 ("1 -0$,@%"5"
ผͷΫΤϦ͕ಉ͡6QEBUFΛ͛Δͱ ΪϟοϓϩοΫΛ̎ॏͰऔΔ 59 #&(*/ 61%"5&VTFS@UBCMF4&5$0..&/5GVHB8)&3&130+&$5@$0%&"/%$6450.&3@*% 2VFSZ0, SPXTB⒎FDUFE
TFD 3PXTNBUDIFE$IBOHFE8BSOJOHT mysql> SELECT * FROM performance_schema.data_locks\G; +--------+----------------+-----------------------+-----------+----------+------------- +-----------------------------+-----------+-----------+-------------+-------------+ | ENGINE | ENGINE_LOCK_ID | ENGINE_TRANSACTION_ID | THREAD_ID | EVENT_ID | OBJECT_NAME | INDEX_NAME | LOCK_TYPE | LOCK_MODE | LOCK_STATUS | LOCK_DATA | +--------+----------------+-----------------------+-----------+----------+------------- +-----------------------------+-----------+-----------+-------------+-------------+ | INNODB | 2255:1070 | 2255 | 49 | 51 | user_table | NULL | TABLE | IX | GRANTED | NULL | | INNODB | 2255:9:5:4 | 2255 | 49 | 51 | user_table | UK_PEOJECT_CODE_CUSTOMER_ID | RECORD | X,GAP | GRANTED | 100, 100020 | | INNODB | 2254:1070 | 2254 | 48 | 140 | user_table | NULL | TABLE | IX | GRANTED | NULL | | INNODB | 2254:9:5:4 | 2254 | 48 | 140 | user_table | UK_PEOJECT_CODE_CUSTOMER_ID | RECORD | X,GAP | GRANTED | 100, 100020 | +————+----------------+-----------------------+-----------+----------+------------- +-----------------------------+-----------+-----------+-------------+-------------+ ˞ΧϥϜҰ෦ུ
σʔλ͕ແ͍ͷͰ*OTFSU͕ͦΕͧΕ࣮ߦ͞Ε %FBE-PDLൃੜ 1)Tx1:ͰInsert mysql> INSERT INTO user_table (PROJECT_CODE,CUSTOMER_ID,COMMENT) VALUES (100,100015,'fuga');
Tx2ͷϩοΫͪ 2)Tx2:ͰInsert mysql> INSERT INTO user_table (PROJECT_CODE,CUSTOMER_ID,COMMENT) VALUES (100,100015,'fuga'); Tx1ͷϩοΫͪͰσουϩοΫ ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 3)Tx2ϩʔϧόοΫ͞ΕTx1ͷINSERT࣮ߦ͞ΕΔɻ Query OK, 1 row affected (17.22 sec)
ਤղ 130+&$5@$0%& $6450.&3@*% ˣ ˣ
ᶃVQEBUF ᶄVQEBUF 5Y 5Y ᶅJOTFSU ᶆJOTFSU ᶇ☠%FBE-PDL
ରԠ wجຊతʹ%FBE-PDLϩδοΫଆͰͯ͠ Β͏͔͠ͳ͍ͷͰɺ࠶ݱͤͯ͞ΞϓϦέʔγϣ ϯΤϯδχΞʹ͓͢͠Δ༁Ͱ͕͢ɺ.Z42- ͷϩοΫதʑఆͮ͠Β͍ॴͰൃੜ͠·͢ Ͷɻ w˞͖͞΄ͲͷϩοΫϨϕϧ3FBE $PNJUUFEͰൃੜ͠·ͤΜɻ
ΧϥϜՃ͍ͨ͠ΜͰ͚͢Ͳɾɾ
ΦϯϥΠϯͰग़དྷ·͔͢ʁ w .Z42-͔Β0/-*/&"-5&3 5"#-& "-(03*5).*/1-"$& ͕͋ΔͷͰΦϯϥΠϯͰ࣮ߦ ग़དྷ·͢ɻ w ͨͩ͠%%-࣮ߦͷ࢝ΊͱऴΘΓͰ.FUBEBUB-PDLΛऔΓ·͢ɻ ςʔϒϧ࠶ߏஙதෛՙߴΊɻ
w ͳͷͰෛՙͷ͍࣌ؒଳʹ࣮ߦ͢Δͷ͕·͍͠ɻ
ͲΕ͘Β͍͔͔Γ·͔͢ʁ w ͜Ε͕ͳ͔ͳ͔͍͠ɻ w ςʔϒϧͷσʔλαΠζʹԠ͕ͯ࣌ؒ͡มΘΔͷͰɺຊ൪ͱ ಉͷσʔλͰςετ w ͔ͭຊ൪ͱಉͷෛՙͰςετʢಉΦϒδΣΫτͰߋ৽ɾࢀ র͕͋Δͱ͔͔Δ͕࣌ؒେมΘΔʣ w
ຊ൪ͱಉ͡ෛՙΛֻ͚Δͬͯ݁ߏΊΜͲ͍ɾɾ w ͱ͍͏༁ͰͬͯϝϯςೖΕͪΌ͏࣌··͋Γ·͢ɻ
ظͷ৽*OTUBOU"EE$PMVNO ALTER TABLE t1 ADD COLUMN d INT DEFAULT 1000,
ALGORITHM=INSTANT; Currently, InnoDB supports INSTANT algorithm for these operations: ▪Change index option ▪Rename table (in ALTER way) ▪SET/DROP DEFAULT ▪MODIFY COLUMN ▪Add/drop virtual columns ▪Add columns(non-generated) – We call this instant ADD COLUMN ▪ ࢀߟ ▪ https://mysqlserverteam.com/mysql-8-0-innodb-now-supports-instant-add-column/ ▪ https://mysqlserverteam.com/the-mysql-8-0-12-maintenance-release-is-generally-available/ ▪ https://mysql.wisborg.dk/2018/07/29/mysql-8-0-12-instant-alter-table/ ʙ
͕͢͞ʹ.FUBEBUB-PDLͪ༗ΔΈ͍ͨͰ͕͢ɾɾɾ ૣ͘ຊ൪Ͱ͍͍ͨʂʂ TX1: mysql> BEGIN; mysql> SELECT user_id FROM user_table
where user_id = 1; +---------+ | user_id | +---------+ | 1 | +————+ 1 row in set (0.00 sec) mysql> select * from performance_schema.metadata_locks; +-------------+--------------------+----------------+-------------+-----------------------+------------- +---------------+-------------+-------------------+-----------------+----------------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | COLUMN_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_DURATION | LOCK_STATUS | SOURCE | OWNER_THREAD_ID | OWNER_EVENT_ID | +-------------+--------------------+----------------+-------------+-----------------------+------------- +---------------+-------------+-------------------+-----------------+----------------+ | TABLE | performance_schema | metadata_locks | NULL | 140577299575536 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:5617 | 55 | 20 | | TABLE | honda | user_table | NULL | 140577299549744 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:5617 | 55 | 21 | +-------------+--------------------+----------------+-------------+-----------------------+------------- +---------------+-------------+-------------------+-----------------+----------------+ 2 rows in set (0.00 sec) -------------------------------------------------------------------------------------------------------------------- TX2: ALTER TABLE user_table ADD COLUMN dd INT NOT NULL DEFAULT 1000, ALGORITHM=INSTANT; ɻɻɻɻ
ΞϓϦαʔόʔ૿͍ͨ͠Μ Ͱ͚͢Ͳ ίωΫγϣϯ૿ͯ͠ େৎ ʁ
.Z42-ͷϝϞϦߏ ࡶ JOOPEC@CV⒎FS@QPPM@TJ[F JOOPEC@MPH@pMF@TJ[F TPSU@CV⒎FS@TJ[F SFBE@CV⒎FS@TJ[F SFBE@SOE@CV⒎FS@TJ[F CJOMPH@DBDIF@TJ[F UNQ@UBCMF@TJ[F UISFBE@TUBDL
OFU@CV⒎FS άϩʔόϧόοϑΝ ηογϣϯόοϑΝ
༻ϝϞϦαΠζͷݟੵΓ ࡶ άϩʔόϧόοϑΝ ηογϣϯόοϑΝYίωΫγϣϯ Ωϟογϡͱ͔04͕͏
ͨͩ͠ ηογϣϯόοϑΝઃఆΛϑϧαΠζඞͣ֬อ ͢ΔΘ͚Ͱͳ͘ɺίωΫγϣϯຖʹϑϧαΠζ֬ อ͢Δͷɺ࠷খ͔Β࢝·ͬͯඞཁʹԠͯ͡࠷େ ·Ͱ֬อ͞ΕΔͷɺඞཁͳঢ়گʹͳͬͨΒϑϧ αΠζ֬อ͢ΔͷɾɾͳͲ৭ʑύλʔϯ͕͋ΔΒ ͍͠ ͋Μ·ΓϚχϡΞϧʹॻ͍ͯͳ͍ʣɻ
KPJO@CV⒎FS@TJ[F w ΠϯσοΫεΛ༻͠ͳ͍+0*/Ͱ༻͞ΕΔɻ w σϑΥϧτ,# Ҏ߱ w ઃఆ͕.#ͩͬͨ w
ࢀߟ IUUQTXXXQFSDPOBDPNCMPH IPXJTKPJO@CV⒎FS@TJ[FBMMPDBUFE
εϨουຖͷ࣮ফඅϝϞϦྔΛܭଌ NZTRMTFMFDU GSPNTZTNFNPSZ@CZ@UISFBE@CZ@DVSSFOU@CZUFT
cUISFBE@JEcVTFScDVSSFOU@DPVOU@VTFEcDVSSFOU@BMMPDBUFEcDVSSFOU@BWH@BMMPDcDVSSFOU@NBY@BMMPDcUPUBM@BMMPDBUFEc ccIPOEB!YYYYYYYYYcc.J#c,J#c.J#c.J#c ccIPOEB!YYYYYYYYYcc,J#c,J#c,J#c.J#c ccSETBENJO!MPDBMIPTUcc,J#cCZUFTc,J#c.J#c ccTRMTJHOBM@IBOEMFSccCZUFTcCZUFTcCZUFTcCZUFTc ccTRMDPNQSFTT@HUJE@UBCMFccCZUFTcCZUFTcCZUFTcCZUFTc ccTRMNBJOccCZUFTcCZUFTcCZUFTcCZUFTc ccTRMUISFBE@UJNFS@OPUJpFSccCZUFTcCZUFTcCZUFTcCZUFTc ccJOOPECJP@XSJUF@UISFBEccCZUFTcCZUFTcCZUFTcCZUFTc mysql> select * from performance_schema.memory_summary_by_thread_by_event_name where thread_id = 42 and SUM_NUMBER_OF_BYTES_ALLOC <> 0; +-----------+-------------------------------------------+-------------+------------+---------------------------+--------------------------+----------------+--------------------+-----------------+-------------------------- +------------------------------+---------------------------+ | THREAD_ID | EVENT_NAME | COUNT_ALLOC | COUNT_FREE | SUM_NUMBER_OF_BYTES_ALLOC | SUM_NUMBER_OF_BYTES_FREE | LOW_COUNT_USED | CURRENT_COUNT_USED | HIGH_COUNT_USED | LOW_NUMBER_OF_BYTES_USED | CURRENT_NUMBER_OF_BYTES_USED | HIGH_NUMBER_OF_BYTES_USED | +-----------+-------------------------------------------+-------------+------------+---------------------------+--------------------------+----------------+--------------------+-----------------+-------------------------- +------------------------------+---------------------------+ | 42 | memory/sql/thd::main_mem_root | 673 | 671 | 8127360 | 8111040 | 0 | 2 | 16 | 0 | 16320 | 326400 | | 42 | memory/sql/THD::sp_cache | 1 | 0 | 8176 | 0 | 0 | 1 | 1 | 0 | 8176 | 8176 | | 42 | memory/sql/sp_head::main_mem_root | 97 | 0 | 1122536 | 0 | 0 | 97 | 97 | 0 | 1122536 | 1122536 | | 42 | memory/sql/sp_head::execute_mem_root | 2447 | 2447 | 19967520 | 19967520 | 0 | 0 | 2 | 0 | 0 | 16320 | | 42 | memory/sql/sp_head::call_mem_root | 797 | 797 | 6503520 | 6503520 | 0 | 0 | 2 | 0 | 0 | 16320 | | 42 | memory/sql/String::value | 951 | 920 | 90544 | 73272 | 0 | 31 | 33 | 0 | 17272 | 32808 | | 42 | memory/sql/THD::db | 809 | 808 | 3251 | 3232 | 0 | 1 | 2 | 0 | 19 | 23 | | 42 | memory/sql/user_var_entry | 7 | 5 | 2155 | 992 | 0 | 2 | 3 | 0 | 1163 | 1675 | |
ରԠ wશίωΫγϣϯ͕ઃఆΛ'VMMͰ͏ͱɺܭࢉ্ϝ ϞϦ͋;ΕΔͷͰίωΫγϣϯ૿ͤͳ͍ɾɾͱ͍ ͏ঢ়گͩͬͨ wઃఆΛదਖ਼Խ͢Δ εϨουόοϑΝ૿͗͢͠ ې wࠓ͕Μ͕Μαʔόʔ૿ͯ͠·͢
%#"ͷਓͬͯ ීஈԿͯ͠ΔΜͰ͔͢ʁ
৭ʑͬͯ·͢ wલهͨ͠Α͏ͳ͍߹ΘͤରԠ wςʔϒϧઃܭϨϏϡʔ wෛՙࢹ w42-ύϑΥʔϚϯενϡʔχϯά wτϥϒϧఆظϝϯςφϯεରԠ w৽όʔδϣϯݕূ wσʔλநग़ wσʔλϕʔεΠϯετʔϧ wόοΫΞοϓઃܭ
ࠓ·Ͱ͜Μͳମ੍Ͱࣄ͖ͯ͠·͕ͨ͠ %#" *OGSB %FW ʙਓ ʙਓ͘Β͍ ͨ͘͞Μ
Ϋϥυશͷ͜ͷ࣌͝ੈɾɾ *OGSB%#" %FW Ռͯ %FW*OGSB%#"
ࠓޙͷෆ҆ɾɾ %FW *OGSB %#" 0UIFS
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ