Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Skip the Path - Find Your Career Trail
mkilby
1
230
Evolving SEO for Evolving Search Engines
ryanjones
0
290
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Paper Plane
katiecoart
PRO
3
53k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Technical Leadership for Architectural Decision Making
baasie
3
560
Done Done
chrislema
186
16k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ