{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,29]],"date-time":"2025-10-29T03:48:02Z","timestamp":1761709682342},"reference-count":49,"publisher":"Association for Computing Machinery (ACM)","issue":"4","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2019,12,9]]},"abstract":"<jats:p>\n            Solid State Drives (SSDs) are complex devices with varying internal implementations, resulting in subtle differences in behavior between devices. In this paper, we demonstrate how a database engine can be optimized for a particular device by learning its hidden parameters. This can not only improve an application's performance, but also potentially increase the lifetime of the SSD. Our approach for optimizing a database for a given SSD consists of three steps:\n            <jats:italic>learning<\/jats:italic>\n            the hidden parameters of the device,\n            <jats:italic>proposing rules<\/jats:italic>\n            to analyze the I\/O behavior of the database, and\n            <jats:italic>optimizing<\/jats:italic>\n            the database by eliminating violations of these rules.\n          <\/jats:p>\n          <jats:p>\n            We obtain two different characteristics of an SSD, namely the\n            <jats:italic>request size profile<\/jats:italic>\n            and the\n            <jats:italic>location profile<\/jats:italic>\n            , from which we learn multiple internal parameters. Based on these parameters, we propose rules to analyze the I\/O behavior of a database engine. Using these rules, we uncover sub-optimal I\/O patterns in SQLite3 and MariaDB when running on our experimental SSDs. Finally, we present three techniques to optimize these database engines: (1)\n            <jats:italic>use-hot-locations<\/jats:italic>\n            on SSD-S, which improves the SELECT operation throughput of SQLite3 and MariaDB by 29% and 27% respectively; it also improves the performance of YCSB on MariaDB by 1%-22% depending on the workload mix, (2)\n            <jats:italic>write-aligned-stripes<\/jats:italic>\n            on SSD-T, reduces the wear-out caused by SQLite3 write-ahead log (WAL) file by 3.1%, and (3)\n            <jats:italic>contain-write-in-flash-page<\/jats:italic>\n            on SSD-T, which reduces the wear-out caused by the MariaDB binary log file by 6.7%.\n          <\/jats:p>","DOI":"10.14778\/3372716.3372724","type":"journal-article","created":{"date-parts":[[2020,1,6]],"date-time":"2020-01-06T20:19:37Z","timestamp":1578341977000},"page":"519-532","source":"Crossref","is-referenced-by-count":9,"title":["Optimizing databases by learning hidden parameters of solid state drives"],"prefix":"10.14778","volume":"13","author":[{"given":"Aarati","family":"Kakaraparthy","sequence":"first","affiliation":[{"name":"University of Wisconsin"}]},{"given":"Jignesh M.","family":"Patel","sequence":"additional","affiliation":[{"name":"University of Wisconsin"}]},{"given":"Kwanghyun","family":"Park","sequence":"additional","affiliation":[{"name":"Microsoft Gray Systems Lab"}]},{"given":"Brian P.","family":"Kroth","sequence":"additional","affiliation":[{"name":"Microsoft Gray Systems Lab"}]}],"member":"320","published-online":{"date-parts":[[2020,1,6]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"HDD vs SSD: What does the future for storage hold? https:\/\/www.backblaze.com\/blog\/ssd-vs-hdd-future-of-storage\/.  HDD vs SSD: What does the future for storage hold? https:\/\/www.backblaze.com\/blog\/ssd-vs-hdd-future-of-storage\/."},{"key":"e_1_2_1_2_1","unstructured":"Intel Optane SSD 900P Series. https:\/\/www.intel.com\/content\/www\/us\/en\/products\/memory-storage\/solid-state-drives\/consumer-ssds\/optane-ssd-9-series\/optane-ssd-900p-series.html.  Intel Optane SSD 900P Series. https:\/\/www.intel.com\/content\/www\/us\/en\/products\/memory-storage\/solid-state-drives\/consumer-ssds\/optane-ssd-9-series\/optane-ssd-900p-series.html."},{"key":"e_1_2_1_3_1","unstructured":"MariaDB Success Stories. https:\/\/mariadb.com\/kb\/en\/library\/mariadb-success-stories.  MariaDB Success Stories. https:\/\/mariadb.com\/kb\/en\/library\/mariadb-success-stories."},{"key":"e_1_2_1_4_1","unstructured":"pandas: Python Data Analysis Library. https:\/\/pandas.pydata.org\/. pandas : Python Data Analysis Library. https:\/\/pandas.pydata.org\/."},{"key":"e_1_2_1_5_1","unstructured":"PRAGMA Statements supported by SQLite. https:\/\/www.sqlite.org\/pragma.html.  PRAGMA Statements supported by SQLite. https:\/\/www.sqlite.org\/pragma.html."},{"key":"e_1_2_1_6_1","unstructured":"Samsung K9XXG08UXA Flash Datasheet. http:\/\/www.samsung.com\/semiconductor.  Samsung K9XXG08UXA Flash Datasheet. http:\/\/www.samsung.com\/semiconductor."},{"key":"e_1_2_1_7_1","unstructured":"Solid-state Drive. https:\/\/en.wikipedia.org\/wiki\/Solid-state_drive.  Solid-state Drive. https:\/\/en.wikipedia.org\/wiki\/Solid-state_drive."},{"key":"e_1_2_1_8_1","unstructured":"SQLite Testing Interface Operation Codes. https:\/\/www.sqlite.org\/c3ref\/c_testctrl_always.html.  SQLite Testing Interface Operation Codes. https:\/\/www.sqlite.org\/c3ref\/c_testctrl_always.html."},{"key":"e_1_2_1_9_1","unstructured":"SQLite3 Database File Format. https:\/\/www.sqlite.org\/fileformat.html.  SQLite3 Database File Format. https:\/\/www.sqlite.org\/fileformat.html."},{"key":"e_1_2_1_10_1","unstructured":"SQLite4 LSM Benchmark. https:\/\/sqlite.org\/src4\/doc\/trunk\/www\/lsmperf.wiki.  SQLite4 LSM Benchmark. https:\/\/sqlite.org\/src4\/doc\/trunk\/www\/lsmperf.wiki."},{"key":"e_1_2_1_11_1","unstructured":"Storage Engines: MariaDB Knowledge Base. https:\/\/mariadb.com\/kb\/en\/library\/storage-engines.  Storage Engines: MariaDB Knowledge Base. https:\/\/mariadb.com\/kb\/en\/library\/storage-engines."},{"key":"e_1_2_1_12_1","unstructured":"strace. https:\/\/strace.io\/.  strace. https:\/\/strace.io\/."},{"key":"e_1_2_1_13_1","unstructured":"The InnoDB Storage Engine. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-storage-engine.html.  The InnoDB Storage Engine. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-storage-engine.html."},{"key":"e_1_2_1_14_1","unstructured":"The Physical Structure of an InnoDB Index. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-physical-structure.html.  The Physical Structure of an InnoDB Index. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-physical-structure.html."},{"key":"e_1_2_1_15_1","unstructured":"The SQLite3 Database Engine. https:\/\/sqlite.org\/index.html.  The SQLite3 Database Engine. https:\/\/sqlite.org\/index.html."},{"key":"e_1_2_1_16_1","unstructured":"Working With SQLite Databases using Python and Pandas. https:\/\/www.dataquest.io\/blog\/python-pandas-databases\/.  Working With SQLite Databases using Python and Pandas. https:\/\/www.dataquest.io\/blog\/python-pandas-databases\/."},{"key":"e_1_2_1_17_1","unstructured":"Write-Ahead Logging in SQLite3. https:\/\/www.sqlite.org\/wal.html.  Write-Ahead Logging in SQLite3. https:\/\/www.sqlite.org\/wal.html."},{"key":"e_1_2_1_18_1","unstructured":"Yahoo! Cloud Serving Benchmark. https:\/\/github.com\/brianfrankcooper\/YCSB.  Yahoo! Cloud Serving Benchmark. https:\/\/github.com\/brianfrankcooper\/YCSB."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.14778\/1687627.1687669"},{"key":"e_1_2_1_20_1","first-page":"57","volume-title":"Design Tradeoffs for SSD Performance. In USENIX 2008 Annual Technical Conference, ATC'08","author":"Agrawal N.","unstructured":"N. Agrawal , V. Prabhakaran , T. Wobber , J. D. Davis , M. Manasse , and R. Panigrahy . Design Tradeoffs for SSD Performance. In USENIX 2008 Annual Technical Conference, ATC'08 , pages 57 -- 70 , Berkeley, CA, USA. N. Agrawal, V. Prabhakaran, T. Wobber, J. D. Davis, M. Manasse, and R. Panigrahy. Design Tradeoffs for SSD Performance. In USENIX 2008 Annual Technical Conference, ATC'08, pages 57--70, Berkeley, CA, USA."},{"key":"e_1_2_1_21_1","unstructured":"A. Baxter. SSD vs HDD. https:\/\/www.storagereview.com\/ssd_vs_hdd.  A. Baxter. SSD vs HDD. https:\/\/www.storagereview.com\/ssd_vs_hdd."},{"key":"e_1_2_1_22_1","first-page":"359","volume-title":"LightNVM: The Linux Open-Channel SSD Subsystem. In 15th USENIX Conference on File and Storage Technologies (FAST 17)","author":"Bj\u00f8rling M.","year":"2017","unstructured":"M. Bj\u00f8rling , J. Gonzalez , and P. Bonnet . LightNVM: The Linux Open-Channel SSD Subsystem. In 15th USENIX Conference on File and Storage Technologies (FAST 17) , pages 359 -- 374 , Santa Clara, CA , 2017 . M. Bj\u00f8rling, J. Gonzalez, and P. Bonnet. LightNVM: The Linux Open-Channel SSD Subsystem. In 15th USENIX Conference on File and Storage Technologies (FAST 17), pages 359--374, Santa Clara, CA, 2017."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508270"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1555349.1555371"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2011.5749735"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.sysarc.2009.03.005"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555790"},{"key":"e_1_2_1_28_1","first-page":"1","volume-title":"Proceedings of the USENIX Annual Technical Conference (ATC)","author":"Duplyakin D.","year":"2019","unstructured":"D. Duplyakin , R. Ricci , A. Maricq , G. Wong , J. Duerig , E. Eide , L. Stoller , M. Hibler , D. Johnson , K. Webb , A. Akella , K. Wang , G. Ricart , L. Landweber , C. Elliott , M. Zink , E. Cecchet , S. Kar , and P. Mishra . The Design and Operation of CloudLab . In Proceedings of the USENIX Annual Technical Conference (ATC) , pages 1 -- 14 , July 2019 . D. Duplyakin, R. Ricci, A. Maricq, G. Wong, J. Duerig, E. Eide, L. Stoller, M. Hibler, D. Johnson, K. Webb, A. Akella, K. Wang, G. Ricart, L. Landweber, C. Elliott, M. Zink, E. Cecchet, S. Kar, and P. Mishra. The Design and Operation of CloudLab. In Proceedings of the USENIX Annual Technical Conference (ATC), pages 1--14, July 2019."},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508271"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2017.2731776"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3064176.3064187"},{"key":"e_1_2_1_32_1","unstructured":"P. Hernandez. SSD vs HDD: Price Comparison. http:\/\/www.enterprisestorageforum.com\/storage-hardware\/ssd-vs-hdd-price-comparison.html.  P. Hernandez. SSD vs HDD: Price Comparison. http:\/\/www.enterprisestorageforum.com\/storage-hardware\/ssd-vs-hdd-price-comparison.html."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1534530.1534544"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2012.60"},{"key":"e_1_2_1_35_1","first-page":"188","volume-title":"AB-Tree: A Write-Optimized Adaptive Index Structure on Solid State Disk. In 2014 11th Web Information System and Application Conference","author":"Jiang Z.","year":"2014","unstructured":"Z. Jiang , Y. Wu , Y. Zhang , C. Li , and C. Xing . AB-Tree: A Write-Optimized Adaptive Index Structure on Solid State Disk. In 2014 11th Web Information System and Application Conference , pages 188 -- 193 , Sept 2014 . Z. Jiang, Y. Wu, Y. Zhang, C. Li, and C. Xing. AB-Tree: A Write-Optimized Adaptive Index Structure on Solid State Disk. In 2014 11th Web Information System and Application Conference, pages 188--193, Sept 2014."},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176887.1176911"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2011.76"},{"key":"e_1_2_1_38_1","volume-title":"Tree Indexing on Solid State Drives. PVLDB, 3(1--2):1195--1206","author":"Li Y.","year":"2010","unstructured":"Y. Li , B. He , R. J. Yang , Q. Luo , and K. Yi . Tree Indexing on Solid State Drives. PVLDB, 3(1--2):1195--1206 , 2010 . Y. Li, B. He, R. J. Yang, Q. Luo, and K. Yi. Tree Indexing on Solid State Drives. PVLDB, 3(1--2):1195--1206, 2010."},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2745844.2745848"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1236360.1236412"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1331331.1331344"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3124680.3124741"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3124680.3124719"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/2095686.2095688"},{"key":"e_1_2_1_45_1","unstructured":"B. Tallis. Micron 3D NAND Status Update. https:\/\/www.anandtech.com\/show\/10028\/micron-3d-nand-status-update.  B. Tallis. Micron 3D NAND Status Update. https:\/\/www.anandtech.com\/show\/10028\/micron-3d-nand-status-update."},{"key":"e_1_2_1_46_1","first-page":"1","volume-title":"Flashy prefetching for high-performance flash drives. In 012 IEEE 28th Symposium on Mass Storage Systems and Technologies (MSST)","author":"Uppal A. J.","year":"2012","unstructured":"A. J. Uppal , R. C. Chiang , and H. H. Huang . Flashy prefetching for high-performance flash drives. In 012 IEEE 28th Symposium on Mass Storage Systems and Technologies (MSST) , pages 1 -- 12 , April 2012 . A. J. Uppal, R. C. Chiang, and H. H. Huang. Flashy prefetching for high-performance flash drives. In 012 IEEE 28th Symposium on Mass Storage Systems and Technologies (MSST), pages 1--12, April 2012."},{"key":"e_1_2_1_47_1","unstructured":"Wikipedia. Write Amplification. https:\/\/en.wikipedia.org\/wiki\/Write_amplification.  Wikipedia. Write Amplification. https:\/\/en.wikipedia.org\/wiki\/Write_amplification."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1275986.1275991"},{"key":"e_1_2_1_49_1","first-page":"481","volume-title":"Proceedings of the 2018 USENIX Conference on Usenix Annual Technical Conference, USENIX ATC '18","author":"Xu Y.","unstructured":"Y. Xu , K. Sui , R. Yao , H. Zhang , Q. Lin , Y. Dang , P. Li , K. Jiang , W. Zhang , J.-G. Lou , M. Chintalapati , and D. Zhang . Improving service availability of cloud systems by predicting disk error . In Proceedings of the 2018 USENIX Conference on Usenix Annual Technical Conference, USENIX ATC '18 , pages 481 -- 493 . Y. Xu, K. Sui, R. Yao, H. Zhang, Q. Lin, Y. Dang, P. Li, K. Jiang, W. Zhang, J.-G. Lou, M. Chintalapati, and D. Zhang. Improving service availability of cloud systems by predicting disk error. In Proceedings of the 2018 USENIX Conference on Usenix Annual Technical Conference, USENIX ATC '18, pages 481--493."}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3372716.3372724","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T10:00:52Z","timestamp":1672221652000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3372716.3372724"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,12,9]]},"references-count":49,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2019,12,9]]}},"alternative-id":["10.14778\/3372716.3372724"],"URL":"https:\/\/doi.org\/10.14778\/3372716.3372724","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2019,12,9]]}}}