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
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The SEO Collaboration Effect
kristinabergwall1
1
590
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
470
How to Ace a Technical Interview
jacobian
280
24k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ