Vertical partitioning is an effective way of improving performance in the database systems where a significant percentage of query processing time is spent on the full scans of relational tables. Vertical partitioning provides even more compelling performance gains when it is combined with the controlled replication of data in the environments where the processing of queries dominates the data manipulations. This paper proposes a new algorithm that finds a suboptimal vertical partitioning of relational tables under a constraint that certain level of redundancies is acceptable in a database. TIle algorithm is based on a new cost model, which precisely estimates I/O throughput as the total number of physical read/write database operations required to implement a given workload. The solution described in the paper transforms a schema of relational database into a partitioned one and decides which components of the original schema should be replicated as the separate partitions. The experiments conducted in this research and reported in the paper confirm the correctness of the cost model used by the vertical partitioning algorithm and demonstrate the expected performance gains from the partitioning.