OLTP 数据库的硬件规格
软件规格
我的首要任务是数据完整性/保护,其次是性能。
我正在从 Ubuntu 服务器安装运行 Percona-Server 实例。我正在使用一个需要访问这个数据库的应用程序,它的性能非常差。一旦建立了数据库,应用程序就会进入(安装时)并创建模式。它将所有内容默认为 MyISAM,但是我已将表引擎转换回 InnoDB。我遇到的问题是插入性能非常差。这个应用程序的写入量非常大,似乎它一次将每一行 1 写入磁盘,而不使用任何类型的缓冲区,但是我不确定如何检查或验证这一点。即使从其中一个表中选择(*)也需要 2.4 秒,并且只有 163,000 行。我有点不知所措,我还能做什么。
服务器有 8GB 的内存,在发生这种情况时 CPU 几乎完全空闲。
我的.cnf:
[mysql]
# CLIENT #
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
# GENERAL #
user = mysql
default_storage_engine = InnoDB
socket = /var/run/mysqld/mysqld.sock
pid_file = /var/run/mysqld/mysqld.pid
# MyISAM #
key_buffer_size = 32M
myisam_recover = FORCE,BACKUP
# SAFETY #
max_allowed_packet = 16M
max_connect_errors = 1000000
skip_name_resolve
sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate_is_now = 1
innodb = FORCE
innodb_strict_mode = 1
# DATA STORAGE # …Run Code Online (Sandbox Code Playgroud) 当我想创建表时,我安装了 Percona Server 5.6.12-rc60.4,例如:
CREATE TABLE IF NOT EXISTS `mydb`.`table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 64 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = XtraDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
发生此错误:
#1286 - Unknown storage engine 'XtraDB'
Run Code Online (Sandbox Code Playgroud)
如何使用 XtraDB 引擎创建表?