SQLite 的一点点。。。不知道对不对
来源:互联网 发布:表格数据转置 编辑:程序博客网 时间:2024/04/30 10:29
老毕让我们演示内存数据库来着,找了个,SQLite。官方网站上,下到了源码,和安装文件(其实免安装,几百k)。既然是内存数据,那怎么体现出内存数据库的特征?
不涉及输入输出,所有工作都在内存中进行呢
下面是一组对比,开始是把SQLite当磁盘数据库用,把sqlite3.h 和.cpp添加到工程,然后下面程序,很简单,插入25万条数据,打开任务管理器,菜单项-》查看-》选择列。加入IO那些列,待会监测输入输出用
#include <iostream>
#include "sqlite3.h"
#include <string>
using namespace std;
int main(){
sqlite3 *db;
char *err_msg = 0;
char * sql_statement = "create table c(id ,name)";
int recode;
recode = sqlite3_open("D://test.db",&db);
if(recode!=SQLITE_OK)
{
cout<<"Can't Open Database: "<<sqlite3_errmsg(db)<<endl;
sqlite3_close(db);
}
else
{
cout<<"Open OK!"<<endl;
recode = sqlite3_exec(db,sql_statement,0,0,&err_msg);
if(recode!=SQLITE_OK)
{
cout<<"error : "<<err_msg<<endl;
sqlite3_close(db);
}
else
{
cout<<"create OK!/n";
//随便插入的数据,25万条
recode = sqlite3_exec(db,"begin trasaction",0,0,&err_msg);
for(int i=0;i<50000;i++)
{
recode = sqlite3_exec(db,"insert into c values(1,12) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,132) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,132) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,21) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,12) ",0,0,&err_msg);
}
recode = sqlite3_exec(db,"commit",0,0,&err_msg);
sqlite3_close(db);
}
}
system("pause");
return 0;
}
运行就可以监视到io不断增加,内存没有增加
想再次运行,到D盘里把test.db删除了
这是磁盘数据库
下面是内存数据库
在内存打开sqlite
#include <iostream>
#include "sqlite3.h"
#include <string>
using namespace std;
int
main(){
sqlite3 *db;
char *err_msg = 0;
char * sql_statement = "create table c(id ,name)";
int recode;
recode = sqlite3_open(":memory:",&db);
if(recode!=SQLITE_OK)
{
cout<<"Can`t Open Database: "<<sqlite3_errmsg(db)<<endl;
sqlite3_close(db);
}
else
{
cout<<"Open OK!/n";
recode = sqlite3_exec(db,sql_statement,0,0,&err_msg);
if(recode!=SQLITE_OK)
{
cout<<"error : "<<err_msg<<endl;
sqlite3_close(db);
}
else
{
cout<<"create OK!/n";
recode = sqlite3_exec(db,"begin trasaction",0,0,&err_msg);
for(int i=0;i<500000;i++)
{
recode = sqlite3_exec(db,"insert into c values(1,12) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,132) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,132) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,21) ",0,0,&err_msg);
recode = sqlite3_exec(db,"insert into c values(1,12) ",0,0,&err_msg);
}
recode = sqlite3_exec(db,"commit",0,0,&err_msg);
sqlite3_close(db);
}
}
return 0;
}
这是插入250万条数据。用任务管理器看到,内存在不断增加,没有任何IO
没有任何IO就体现出内存数据库的特征了吧
不知道对不对。
简单的程序体现内存数据特征
- SQLite 的一点点。。。不知道对不对
- 不知道对不对
- 不知道这对不对
- 我的不知道对不对的dij模板
- XML练习文档 不知道自己写的对不对!
- IRate用户评分我的实现方法,不知道对不对
- 树的遍历方式(不知道对不对)
- SetLocalTime失败[先留着 不知道说的对不对]
- 我不知道这样到底对不对
- JVM的工作原理,我只是简单的说下,不知道对不对!
- 奇怪的不知道对不对的二分图最大匹配算法=_=
- 刚学的类与对象的思想(不知道对不对,求大神指导)
- 关于extern "C"的一些整理,不知道对不对(转贴)
- 高校挑战题,不知道对不对,不过数值不大的话,应该是对的。
- 我不知道我的选择对不对,但我决定坚持——发发牢骚
- 【励志篇】我不知道我的坚持对不对,但是我想试一试
- 整理了一下学的文件(不知道对不对,请大神指导)
- 网上看到的,也不知道说的对不对
- Visual C++中进行动态绘图时坐标映射
- Candies 3159----差分约束系统+spfa
- 合格程序员的最基本的要求
- 掌握Linux 程序调试
- Java图片缩放类
- SQLite 的一点点。。。不知道对不对
- 在 Linux 上构建一个 RADIUS 服务器
- 问答:gcc编译参数
- 2008+II7下的问题
- 什么是Core Dump?
- GPIO的驱动注册表
- Beej网络socket编程指南
- console和terminal
- 【修复】快捷方式无法打开