- Always create your own primary key. [ref]. The PK controls how your data is physically laid out.
- Always try to insert records in PK order [ref]. Usually this means use
AUTO_INCREMENTfor the PK. UsingUUIDis a very poor choice. A commonly encountered situation is when you are ingesting data from elsewhere and the data already uses aUUIDto uniquely identify records. In this case you are stuck between a rock and a hard place.
– Option 1: You useAUTO_INCREMENTfor PK. Your writes will be fast but you lose any data-integrity checks and you won’t be able to lookup byUUID(reads are slow).
– Option 2: You use theUUIDfield for PK. You are guaranteed data-integrity (no duplicates) but your writes will suffer and index will bloat up significantly.
– Option 3: You useAUTO_INCREMENTfor PK andCREATE UNIQUE INDEXon the UUID column. I suspect this will give same performance (or worse) than Option 2.
– Option 4 (not always possible): Use Option 3 but disable the index when doing inserts [ref]. Only works when you are able to do inserts in bulk. Not possible if you need to do inserts continuously as is the case in lot of applications. - For high-performance applications, don’t use FKs. Rely on your application to maintain data-integrity.
- For high-performance, avoid
SELECT ... FOR UPDATEand instead rely on application-level optimistic concurrency control using a version column. - Single most important setting to get right is the
innodb_buffer_pool_size. Set it large enough so your indexes can fit in memory. But it should be less than 75% of RAM. Give some space to the OS, connections etc. Do some research on SO etc.
-
Recent Posts
Categories
Archives
- February 2026
- January 2026
- December 2025
- April 2025
- March 2025
- January 2025
- November 2024
- October 2024
- August 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- December 2023
- November 2023
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- February 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- August 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- September 2018
- August 2018
- September 2017
- June 2017
- May 2017
- January 2017
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- May 2016
- April 2016
- February 2016
- December 2015
- October 2015
- September 2015
- August 2015
- June 2015
- May 2015
- April 2015
- March 2015
- December 2014
- November 2014
- October 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- November 2012
- October 2012
- September 2012
- August 2012
- June 2012
- April 2012
- January 2012
- December 2011
- October 2011
- September 2011
- August 2011
- July 2011
- May 2011
- March 2011
- January 2011
- August 2010
- April 2010
- February 2010