# Fast Performance Modeling across Different Database Versions Using Partitioned Co-Kriging
## 3 Problem Overview  
### Problem Statement  
In this paper, we focus on building an accurate performance model rapidly with a small amount of samples for a database system in a newer database version. For a given database and a specific workload, our object is to enable the reuse of previous performance measurements in an older database version to facilitate the performance prediction in a newer version. In order to formalize this problem concisely, we introduce some mathematical symbols to represent related concepts.  
**Configuration**. A configuration of a database system is represented as a set \(x=(c_{1},c_{2},\cdots,c_{n})\), where \(c_{i}\) indicates the \(i\)-th configuration parameter of the database system and \(n\) is the number of configuration parameters. The configuration parameters can either be (1) an integer variable in the valid configuration bound of the parameter, (2) a categorical variable or a Boolean variable. The configuration space is a Cartesian product of all configuration parameters \(\mathbb{X}=Dom(c_{1})\times\cdots\times Dom(c_{n})\), where \(Dom(c_{i})\) is the valid range of each parameter.  
**Performance model**. Performance (e.g., throughput or latency) is an essential non-functional property of database systems. Different configurations may lead to different performance values. We treat the performance as a black-box function, which describeshow configuration parameters and their interactions influence the system performance. Given a database system \(A\) and a workload \(W\) with configuration space \(\mathbb{X}\), a performance model is a black-box function \(f\colon\mathbb{X}\to\mathbb{R}\) that maps each configuration \(x\in\mathbb{X}\) of \(A\) to the performance of the system.  
**Sample**. Due to the large configuration space and expensive measurement cost, researchers usually propose to measure the performance values of a limited number of configurations (called sample), then construct a performance model from these data to predict the performance values of any new configuration. We run a database \(A\) in a certain version \(v\in V\) on various configurations \(x_{i}\in\mathbb{X}\), and record the resulting performance values \(y_{i}\). The training data for learning a performance model for system \(A\) with version \(v\) are \(D_{tr}=(x_{i},y_{i}),\ i=1,2,\cdots,m\), where \(m\) is the number of performance measurements. The database in an older version is called source domain, while the database in a newer version is called target domain. \(S_{S}\) and \(S_{T}\) indicate the samples in source and target, respectively.  
The object is to learn a reliable performance model \(\hat{f}(x)\) in target domain. Specifically, we aim to minimize the prediction error over the configuration space:  
\[\arg\min_{x\in\mathbb{X}}pe=|\hat{f}(x)-f(x)|. \tag{1}\]  
The difficulty of this problem is to use only a small sample while still be able to predict the performance of other unseen configurations with a high accuracy. In this paper, we import the measurements in source domain to help constructing a reliable performance prediction model in target domain. Thus, the inputs to this problem are a large number of samples from the source and a small number of samples from the target, while the output is a reliable performance model in target, as described in Figure 1.