Upload of Latency testing code for the sakila test database in MySQL
This commit is contained in:
		
							
								
								
									
										45
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| { | ||||
|     // Use IntelliSense to learn about possible attributes. | ||||
|     // Hover to view descriptions of existing attributes. | ||||
|     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||||
|     "version": "0.2.0", | ||||
|     "configurations": [ | ||||
|         { | ||||
|             "type": "lldb", | ||||
|             "request": "launch", | ||||
|             "name": "Debug executable 'sql_load_test'", | ||||
|             "cargo": { | ||||
|                 "args": [ | ||||
|                     "build", | ||||
|                     "--bin=sql_load_test", | ||||
|                     "--package=sql_load_test" | ||||
|                 ], | ||||
|                 "filter": { | ||||
|                     "name": "sql_load_test", | ||||
|                     "kind": "bin" | ||||
|                 } | ||||
|             }, | ||||
|             "args": [], | ||||
|             "cwd": "${workspaceFolder}" | ||||
|         }, | ||||
|         { | ||||
|             "type": "lldb", | ||||
|             "request": "launch", | ||||
|             "name": "Debug unit tests in executable 'sql_load_test'", | ||||
|             "cargo": { | ||||
|                 "args": [ | ||||
|                     "test", | ||||
|                     "--no-run", | ||||
|                     "--bin=sql_load_test", | ||||
|                     "--package=sql_load_test" | ||||
|                 ], | ||||
|                 "filter": { | ||||
|                     "name": "sql_load_test", | ||||
|                     "kind": "bin" | ||||
|                 } | ||||
|             }, | ||||
|             "args": [], | ||||
|             "cwd": "${workspaceFolder}" | ||||
|         } | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										9
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| [package] | ||||
| name = "sql_latency_test" | ||||
| version = "0.1.0" | ||||
| edition = "2021" | ||||
|  | ||||
| # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||
|  | ||||
| [dependencies] | ||||
| mysql = "24.0.0" | ||||
							
								
								
									
										31
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| use std::time::{SystemTime, Duration}; | ||||
|  | ||||
| use mysql::*; | ||||
| use mysql::prelude::*; | ||||
|  | ||||
| fn main() -> std::result::Result<(), Box<dyn std::error::Error>> { | ||||
|     //Create a connection pool | ||||
|     let url = "mysql://sakila:p_ssW0rd@localhost:3306/sakila"; | ||||
|     let pool = Pool::new(url)?; | ||||
|     let mut conn = pool.get_conn()?; | ||||
|  | ||||
|     //Outline the number of queries and mark the start time. | ||||
|     const NUMQUERIES: u32 = 5_000; | ||||
|     let mut times: Vec<(u32, Duration)> = vec![]; | ||||
|     let start_time = SystemTime::now(); | ||||
|  | ||||
|     // Run the Query, NUM_QUERIES times | ||||
|     for i in 0..NUMQUERIES { | ||||
|         let start_query = SystemTime::now(); | ||||
|         let _ = conn.query_drop(r"SELECT release_year, COUNT(*) FROM sakila.film INNER JOIN (SELECT DISTINCT release_year FROM sakila.film) release_years USING (release_year) GROUP BY release_year;")?; | ||||
|         times.push((i, SystemTime::now().duration_since(start_query).unwrap())) | ||||
|     } | ||||
|  | ||||
|     //Output results | ||||
|     println!("Total execution time: {}s", SystemTime::now().duration_since(start_time).unwrap().as_secs_f32()); | ||||
|     for (query_id, duration) in times.iter() { | ||||
|         println!("{}: {}.{} milliseconds", query_id, duration.as_millis(), duration.as_micros()); | ||||
|     } | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user