mysql 存储引擎版本_mysql不同版本和存储引擎选型的验证

Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路。

主要涉及:

Mysql的版本

v Mariadb

v Tokudb

v Oracle

具体的存储引擎

v Myisam

v Innodb

v TokuDB

v Maria

如下是具体的思路

My.cnf配置

log-bin=mysql-bin 关闭,不要写日志

skip-networking 开启

安装和配置

v mariadb5.5

v Oracle

v Tokudb

如上目录下有对应的安装,卸载脚本

具体步骤如下:

1.首先停止mysql服务

a) service mysql stop / service mysqld stop

b) killall -9 mysql | killal -9 mysqld

c) /etc/profile中不要有mysql的环境变量设置

2.安装引擎

a) 以上的各个对应目录有安装的脚本

3.检验

a) 进入对应的安装目录下的bin目录

b) ./mysql -uroot -p123456 检查安装的版本信息是否正确

c) show engines; show plugins; 可以查看引擎的安装情况

4.运行单元测试验证各个引擎的性能

单元测试[Gtest]

基础插入函数

包括

v 迭代次数

v 存储包的大小:数据字段可设置大小

###是具体的业务表

static void insertOneSession(int count, int size, bool canTruncate = true){

### item = createItem(size);

cppdb::session session;

static const std::string sql =

"insert into `###`) \

VALUES ( ?, FROM_UNIXTIME(?), ?, ?, ?, ?, ?, \

INET_ATON(?), ?, ?, ?, ?, ?, \

?, ?, ?)";

{

try {

session = cppdb::session(::common::base::BaseData::dbConnectString);

cppdb::statement stmt;

if (canTruncate) {

const static string ready = "TRUNCATE table ***";

stmt = session.prepare(ready);

stmt.exec();

}

stmt = session.prepare(sql);

for (int i = 0; i < count; i++) {

stmt.reset();

stmt.bind(###);

...

stmt.exec();

}

} catch (std::exception const &e) {

LOG(ERROR)<< "saveDB:" << e.what();

}

// //关闭链接

if (session.is_open())

session.close();

}

{

//统计出表空间

session =

cppdb::session(

"mysql:user=root;password=123456;database=mysql;set_charset_name=utf8; @pool_size=1");

cppdb::statement stmt =

session.create_statement(

"select table_name,engine,ROUND(data_length/1024,2) size,table_rows from information_schema.tables where table_schema='###' and table_name='traffic'");

cppdb::result r = stmt.query();

while(r.next()){

string table_name, engine;

long size, table_rows;

r.fetch(table_name);

r.fetch(engine);

r.fetch(size);

r.fetch(table_rows);

LOG(INFO) <

}

if (session.is_open())

session.close();

}

}

Isam存储测试

class benchMyisamTest: public testing::Test {

public:

static void SetUpTestCase() {

//建立对应的表结构

std::string mysql = "/usr/local/mysql/bin/mysql --default-character-set=utf8 -uroot -p123456 -D mysql -e \"source myisam.sql\"";

system(mysql.c_str());

}

static void TearDownTestCase() {

}

};

TEST_F(benchMyisamTest, 1w100) {

insertOneSession(10000, 100);

}

TEST_F(benchMyisamTest, 1w1000) {

insertOneSession(10000, 1000);

}

....

多线程存储测试

#include

//多个工作线程的处理

int thread_Num, thread_Size;

void worker(){

insertOneSession(thread_Num, thread_Size);

}

void workerThread(int ts, int count, int size){

//多线程模式下必须使用,否则mysql client库无法连接错误111

mysql_library_init(0, NULL, NULL);

thread_Num = count;

thread_Size = size;

boost::thread_group threads;

for (int i = 0; i < ts; ++i){

threads.create_thread(&worker);

}

threads.join_all();

LOG(INFO) << "done";

//这个错误好像是libmysqlclient的兼容问题 Error in my_thread_global_end(): 4 threads didn't exit

mysql_library_end();

}

TEST_F(benchMyisamTest, thread_1w100) {

workerThread(2, 10000, 100);

}

TEST_F(benchMyisamTest, thread_30w) {

workerThread(3, 100000, 1000);

}

..

其他引擎测试

和如何类似,你可以写出你自己的测试引擎

结果

如下只是我用的虚拟机平台的结果,不代表普适性

存储引擎

优点

缺点

MyISAM

v 插入快

v 查询可以使用索引

v 存在表崩溃问题

ARCHIVE

v 大量时比myisam还快

v 无索引

v 不能更新、删除

InnoDB

v 支持事务

v 慢

TokuDB

v 写入的高性能没有测到

v

Maria

v 和Myisam类似

v 对崩溃安全

v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python制作表白神器_python制作exe可执行表白神器-Go语言中文社区

1、效果图2、程序源码import turtleimport time#writing txtturtle.hideturtle()turtle.penup()turtle.goto(130,50)# turtle.pendown()turtle.color("blue")turtle.write("亲爱的&#xff0c;给你画个东西",font ("Times",18,"bold"…

qtp连接mysql 无驱动_QTP连接MySQL

1、安装 Connector/ODBC2、查看数据源名称『控制面板』- 『管理工具』- 『数据源(ODBC)』-『添加』3、连接数据库Dim Conn,ConnString创建数据库实例Set ConnCreateObject("ADODB.Connection")连接字符串ConnString"Driver{Mysql ODBC 5.2w Driver};DATABASEmys…

python3如何安装selenium_Mac-Firefox浏览器+selenium+Python3环境安装

1.安装selenium安装命令&#xff1a;pip3 install selenium2.53.6如果之前已经安装过了&#xff0c;可以先卸载pip3 uninstall selenium使用selenium2.53.6版本是因为-selenium2的版本会更加稳定(切记注意版本号&#xff0c;很多问题都是由于版本不兼容导致的哦2.安装Firefox浏…

python保存模型的路径怎么写_使用python在MongoDB中保存机器学习(ML)和深度学习(DL)模型...

我们知道&#xff0c;当我们训练机器学习或深入学习模型时&#xff0c;我们必须保存训练过的模型&#xff0c;以便将来进行预测。现在的训练模型非常昂贵&#xff0c;所以如果我们能够保存它们并将其用于解决其他一些问题。例如&#xff0c;一个训练过的能够识别汽车的神经网络…

抓狐狸python_​用Python操作Kubernetes的Job

本文给出Python SDK操作Kubernetes Job的更多示例代码&#xff0c;以及相关解释。pip install kubernetes初始化from kubernetes.client import BatchV1Apifrom kubernetes.config import load_kube_configload_kube_config()batch BatchV1Api()load_kube_config 是从默认位置…

mysql8支持myISAM_mysql菜鸟手迹8--mysql存储引擎之MyISAM

MyISAM可以将表压缩为只读表来节省空间。使用myisampack工具来进行表压缩。MyISAM支持全文索引&#xff1b;一般使用instr()来替代。myisam在写的时候&#xff0c;会产生一个表级锁。myisam锁的时候使用一个lock命令&#xff0c;lock类型有write锁(只有当前线程可以做读写删操作…

mysql双机数据热备份_配置MySQL数据库双机热备份

1、mysql 数据库没有增量备份的机制&#xff0c;当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制&#xff0c;其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。  2、要想实现双机的热备首先要了解主从…

java token_Java实现基于token认证的方法示例

随着互联网的不断发展&#xff0c;技术的迭代也非常之快。我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证&#xff0c;然而到了今天&#xff0c;这种认证已经不能满足与我们的业务需求了(分布式&#xff0c;微服务)。我们采用了另外一种认证方式&#xff…

重置mysql+密码_MySQL重置root密码的几种方法(windows+Linux)

重置root密码的方法&#xff1a;windows系统下&#xff1a;1、停止mysql服务&#xff1b;2、新建文件init-root.txt,写上如下内容&#xff1a;update mysql.user set password password(‘newpwd‘) where user ‘root‘;flush privileges;保存&#xff1b;3、打开命令行&…

java 中导出word后压缩文件_Java批量导出word压缩后的zip文件案例

一、js代码&#xff0c;由于参数比较大所以利用form表单使用post导出function export_word(){var selectedRows $("#dg").datagrid("getSelections");if (selectedRows.length0) {showAlertWarning("请选择一条的信息...");return;}if (selecte…

opengl es java_java – 在Android OpenGL ES App中加载纹理

1)您应该根据需要分配尽可能多的纹理名称.一个用于您正在使用的每个纹理.加载纹理是一项非常繁重的操作,会使渲染管道停顿.所以,你永远不应该在游戏循环中加载纹理.您应该在呈现纹理的应用程序状态之前具有加载状态.加载状态负责加载渲染中所需的所有纹理.因此,当您需要渲染几何…

java io 视频 下载_Java下载映客主播视频回放到电脑硬盘

Java下载映客主播视频回放到电脑硬盘使用Java下载映客回放到电脑硬盘使用方法&#xff1a;在映客app播放回放视频时&#xff0c;分享到QQ&#xff0c;就可以得到url&#xff0c;其中的liveid属性就是视频ID。源代码由 [**海思教育**](http://edu.itshidu.com/) 提供&#xff0c…

java jni helloword_JNI学习一:编写HelloWorld程序

转载请说明出处~本文教程翻译jni官方文档的部分内容。要查看Jni官方文档&#xff0c;请点击这里先感叹一下时光如水&#xff0c;岁月不留人哇有木有&#xff01;&#xff01;&#xff01;认真想想在XMU的这三年&#xff0c;真的改变了我好多。我还清楚地记得学习C语言写的第一个…

【学习记录】macOS的Redis安装及基本使用

【学习记录】macOS的Redis安装及基本使用一. Redis的安装与启动二. 简单使用① 尝试插入第一个key-value② Redis的数据类型与基本使用字符串列表字典&#xff08;哈希表&#xff09;集合有序集合三. 杂乱无章的笔记一. Redis的安装与启动 打开终端&#xff0c;输入以下命令即…

java scipt 对象 函数_java script 基本函数

Math.random() 是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。日期时间函数(需要用变量调用)&#xff1a;var b new Date(); //获取当前时间b.getTime() &#xff1b; //获取时间戳b.getFullYear()&#xff1b; //获取年…

[学习记录] macOS下的Nginx安装 Nginx基本知识

[学习记录] macOS下的Nginx安装 && Nginx基本知识一. 安装相关1. 安装&#xff1a;直接通过brew安装即可2. 启动&#xff1a;3. 成功运行判断&#xff1a;4. 改端口号&#xff1a;由于8080这个端口号很容易冲突&#xff0c;因此需要改一个其他的端口号。二. Nginx 学习…

java 下载限速_Java 文件下载限流算法

在做文件下载功能时&#xff0c;为了避免下载功能将服务器的带宽打满&#xff0c;从而影响服务器的其他服务。我们可以设计一个限流器来限制下载的速率&#xff0c;从而限制下载服务所占用的带宽。一、算法思路定义一个数据块chunk(单位 bytes)以及允许的最大速率 maxRate(单位…

【学习笔记】JAVA基础——异常处理部分

文章目录前言简介一. try、catch与finally① try && catch② finally③ throws补充&#xff1a;JVM 相关二. 异常的分类① 分类解释与思维导图三. 自定义异常例子&#xff1a;Hero类的attack方法的isDeadException。四. 上传代码到GIT① 首先在github新建一个仓库Java_…

java 反射 json_java 反射机制构建JSON字符串

java 反射机制构建JSON字符串。接着上一篇文章、今天继续学习利用java 反射机制构建JSON字符串。JSON的格式跟使用的方式方法就不讲了、这个百度一下就有……好了今天心情很糟糕、直接上代码吧&#xff01;[java]view plaincopyprint?import java.lang.reflect.Field;import j…

【学习笔记】数据链路层的差错控制——检错编码与纠错编码(海明码、奇偶检验码与CRC循环冗余码)

文章目录前言一. 差错控制简介二.补充知识三. 检错编码&#xff08;1&#xff09;奇偶检验码组成&#xff1a;构造方法&#xff1a;以奇检验码为例。举个例子&#xff1a;检验码求法&#xff1a;错误检测方法&#xff1a;特点&#xff08;2&#xff09;CRC循环冗余检验码三要素…