月归档:2013 年十一月

SQLite 优化笔记

http://blog.ieph.net/archives/316 2010/04/30 17:16 最近在折腾一个几十 G 的 SQLite 数据库,里边有十来个表,大都有数千万条数据,结果是一个 SELECT COUNT(*) 都一个小时没动静……于是翻了些资料优化了一下,以下是流水账: 1、将数据库从 HDD 转移到 SSD 。由于 SSD 的 IOPS 是 HDD 的数十倍,某些查询可以有十倍以上的提升。不过 SSD 空间实在有限,如果能把索引独立存放就好了…… 从 HDD 到 SSD ,SELECT COUNT(*) 所花的时间: ~ 5000 s   ⇒   546 s 2、VACUUM 。这个命令用于删除那些留给插入更新的多余空间,据说还能清理磁盘碎片,可以提升两倍左右的检索速度,不过相当花时间占空间。SQLite 要先在临时文件夹建立和数据库相当大小的文件,再在数据库文件夹建立和数据库相当大小的 journal 文件。也就是说数据库所在驱动器和临时文件夹都要保证足够的空间。可以设置系统 TMP 或者用 PRAGMA temp_store_directory 改变临

发表在 未分类 | 评论关闭

MySQL分区性能初探

http://www.cnblogs.com/acpp/archive/2010/08/09/1795464.html 一,      分区概念  分区允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表。MySQL从5.1.3开始支持Partition。 分区和手动分表对比 手动分表  分区 多张数据表 一张数据表 重复数据的风险 没有数据重复的风险 写入多张表 写入一张表 没有统一的约束限制 强制的约束限制   MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用: Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。 Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。 Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。 List(预定义列表)–这种模式允许系统通过预

发表在 未分类 | 评论关闭

从MySQL迁移到MariaDB(CentOS)

  http://database.51cto.com/art/201306/399720.htm MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者Michael Widenius创办的公司开发的免费开源的数据库服务器。Red Hat企业发行版RHEL 7将用MariaDB替代MySQL,一旦RHEL完成切换,基于RHEL的社区版 CentOS 将会紧跟着作出改变。所以呢,使用CentOS系统的这个VPS或迟或早都是要切换到MariaDB的,大势所趋啊。 AD:2013云计算架构师峰会课程资料下载 下面先摘录一点背景介绍,然后是我在 CentOS 6.4 上从 MySQL 5.5.31 迁移至 MariaDB 5.5.31 的操作记录。最后是我后来发现一个较好的迁移方法。 1. 背景介绍 MySQL是世界上最流行的开源关系数据库。2008 年,Sun 收购 MySQL。然后 2010 年,甲骨文又收购了 Sun,于是 MySQL 落入了甲骨文(Oracle)手中。Oracle 与开源社区关系的一直不太好,甚至 MySQL 也被弄成了

发表在 未分类 | 评论关闭

深入了解MySQL 5.5分区功能增强

http://database.51cto.com/art/201002/184392.htm Oracle在并购Sun后对于MySQL的态度令人寻味。在新发布的MySQL 5.5中带来了许多增强的功能,在这篇文章中,我们将解释一下MySQL 5.5分区功能的增强特性。 AD:2013云计算架构师峰会课程资料下载 【51CTO经典译文】MySQL 5.5的发布带来了许多增强的功能,虽然已经报道了很多增强功能,如半同步复制,但大家却忽略了分区方面的增强,有时甚至还对其真正意义产生了误解,在这篇文章中,我们希望解释一下这些很酷的增强,特别是我们大多数人还没有完全理解的地方。51CTO向您推荐《MySQL数据库入门与精通教程》。   图 1 大家还没注意到我MySQL的分区功能也很强了哦 非整数列分区 任何使用过分区的人应该都遇到过不少问题,特别是面对非整数列分区时,MySQL 5.1只能处理整数列分区,如果你想在日期或字符串列上进行分区,你不得不使用函数对其进行转换。 MySQL 5.5中新增了两类分区方法,RANG和LIST分区法,同时在新的函数中增加了一个COLUM

发表在 未分类 | 评论关闭

SQLite 3 索引和数据分析/清理

http://www.cnblogs.com/stephen-liu74/archive/2012/01/14/2322335.html Posted on 2012-02-17 00:09 Stephen_Liu 阅读(9012) 评论(0) 编辑 收藏 一、创建索引: 在SQLite中,创建索引的SQL语法和其他大多数关系型数据库基本相同,因为这里也仅仅是给出示例用法: sqlite> CREATE TABLE testtable (first_col integer,second_col integer);     –创建最简单的索引,该索引基于某个表的一个字段。 sqlite> CREATE INDEX testtable_idx ON testtable(first_col);     –创建联合索引,该索引基于某个表的多个字段,同时可以指定每个字段的排序规则(升序/降序)。 sqlite> CREATE INDEX testtable_idx2 ON testtable(first_col ASC,second_col DESC

发表在 未分类 | 评论关闭

SQLite文件数据库、内存数据库建立及导入导出

http://blog.csdn.net/xiaomuwuxiaomuwu/article/details/6599002   一、初识sqlite 偶 然的机会接触到sqlite,不禁惊叹sqlite的体型小巧而功能强大(看来软件也不可貌相哦),Sqlite 是开源的内存数据库(也可以称之为内嵌式数据库),大量无私的程序员为sqlite发展贡献了自己的力量。Sqlite 应用极广,手机、mp3,机顶盒可能存在sqlite身影,Apple的Mac os,linux,或者windows在安装第三方软件时也可以应用sqlite。 Sqlite技术优点: 1.  Sqlite轻量级、跨平台的关系型开源内存数据库,使用sqlite只需带上动态库,就可使用sqlite全部功能(动态库Windows下487KB,Linux下347KB); 2.   核心引擎不依赖第三方软件,也不需要安装; 3.   数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。如果使用内存方式,可以没有该文件; 4.   除了主流操作系统,SQ

发表在 未分类 | 评论关闭

Sqlite数据库删除大量数据后的擦屁股工作

http://syokouken.iteye.com/blog/713311 1. SQLite 内存数据库备份到磁盘中。 备份当前SQLite内存数据库(:memory:模式创建的数据库)到磁盘中,备份磁盘数据库,当然也可以用此办复制数据库。以下使用SQLite的 .Net版本。 string dbFile = @”D:\data\books.db”; SQLiteCommand cmd = conn.CreateCommand(); cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = string.Format(“attach ‘{0}’ AS disk_db”, dbFile); cmd.ExecuteNonQuery() ; cmd.CommandText = “BEGIN TRANSACTION”; cmd.ExecuteNonQuery(); //存在表则删除该表 cmd.CommandText = “DROP TABLE IF EXISTS disk_db.add

发表在 未分类 | 评论关闭

Sqlite大数据量查询优化比较http://www.taogogo.info/2010_10_8_699002.html

Sqlite大数据量查询优化比较 http://www.taogogo.info/2010_10_8_699002.html 标题写的有些大了…… 我做的一个PHP玩具用的是Sqlite数据库,昨天某网站采集了4039篇文章,发现页面打开速度慢的要死,看了一下耗时,发现sqlite在数据量比较大(4000算大?……我觉得挺大的了)的时候执行order by xxx desc会变得很慢…… 1、select * from blog_cms where status=1 limit 0,10 耗时15ms 2、select * from blog_cms where status=1 ORDER BY id DESC limit 0,10 耗时1187ms 如果Sqlite查询只是搜索出id会快些↓ 3、select id from blog_cms where status=1 ORDER BY id DESC limit 0,10 耗时650ms 那么就这样来,Sqlite查询直接搜索id,然后再通过id查询详细信息↓ 4、select * from blog_cms where i

发表在 未分类 | 评论关闭

提高sqlite数据库大数据量insert的效率

http://chengyan.sinaapp.com/?p=235 Posted on 2012/12/18 by 成彦 刚刚把英语单词的词频统计完成,想把这份数据做成一个sqlite数据库,放在我正在开发的一个英语词典中使用。词频数据共36多万条,数据表结构很简单: table t_freq(word varchar(30), freq integer); 于是我敲入如下指令: > sqlite3 ./word_freq_distinct.db SQLite version 3.7.7 2011-06-25 16:35:41 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table t_freq(word varchar, freq integer); sqlite> .read ./tmp.sql tmp.sql是我已经生成好的sql语句文件,全部都是insert语句: ... 365729 insert into t_fre

发表在 未分类 | 评论关闭

SQL server 2008如何还原数据库?/ BAK

与SQL 2005或SQL 2008是一样的,在这里分享给大家; 首 先,当然是要备份好一份SQL的数据文件;通常我们讲的还原数据库是指文件到数据库,而在这里,SQL2000,备份的文件可以还原到高版本的SQL server上,而高版备份文件却还原不了低版本的SQL server;下面我们来操作一次给大家看,因为我的备份文件很大,20G左右,有点慢; 如图示: 登陆SQL Server Management Studio管理器,然后右击数据库-选择还原数据库: 这里首先写好数据库名-选择源设备-文件-添加数据库文件(文件名是以.bak结尾的备份文件);然后确定: 这里便可以看这个备份文件的基本内容;备份日期,备份类型,数据库名等; 然后我们下一步完成还原;这里通常会有一个报错,超过所有数据库大小达到10G会还原失败,我查了一下资料: 解决办法: 1、选中该数据库“右键”选择【属性】; 2、在弹出的对话框中选择【选项 】,然后在右侧列表找到【状态】下的【限制访问】:将状态值改为“Multiple”或者“MULTI_USER” ,点击【确定】保存就可以了! 以上参考之用,但

发表在 未分类 | 评论关闭

EJDB

  http://ejdb.org/ Embedded JSON Database engine Download ZIP Download TAR View On GitHub This project is maintained by Softmotions   EJDB aims to be a fast MongoDB-like library which can be embedded into C/C++, .Net, NodeJS, Python, Lua, Java, Ruby, Go applications under terms of LGPL license. EJDB is the C library based on modified version of Tokyo Cabinet. JSON representation of queries and data implemented with API based on C BSON News 2013-09-20 EJDB Matlab binding from Kota

发表在 未分类 | 评论关闭

LevelDB关键实现图解

http://www.wzxue.com/leveldb%E5%9B%BE%E8%A7%A3/ LevelDB是Google开源出的一个Key/Value存储引擎,它采用C++编写的,支持高并发访问和写入,特别适合对于高写入业务环境。 对于LevelDB的概览可以参考数据分析与处理之二(Leveldb 实现原理)对LevelDB的一个描述,本文的图解更多的是LevelDB的一个实现层的纠缠,版本为LevelDB 1.7.02。 LevelDB存储主要分为SSTable和MemTable,前者为不可变且存储于持久设备上,后者位于内存上并且可变(在LevelDB中有两 个MemTable,一个为当前写入MemTable,另一个为等待持久化的不可变MemTable)。首先来看SSTable的实现层分析。 (黄色代表方法,蓝色代表变量或者对象成员,橙色代表类,白色为说明或者外部源) Contents SSTable的访问实现 SSTable的建立 SSTable内部格式 MemTable解析 SSTable的访问实现 点击看大图 从SSTable中可以发现,LevelDB中SSTa

发表在 未分类 | 评论关闭

Sqlite 管理工具&UTF8

http://www.rabbit8.cn/Reprinted/335.html SQLiteStudio(推荐5星) 官网:http://sqlitestudio.one.pl/ 功能完善的sqlite2和sqlite3工具,视图编码为utf8。 SQLiteSpy(推荐5星),只识别sqlite3 官网: http://www.yunqa.de/delphi/doku.php/products/sqlitespy/ 单文件,界面设计紧凑,较稳定,功能较少,创建表与添加数据均需sql语句,快捷键教方便,作为数据浏览和修改工具极佳,试图编码为utf-8,对gbk2312显示乱码。 Sqlite3Explorer(推荐4星),用于sqlite3 官网:http://www.singular.gr/sqlite/ 但xp下只是别gbk2312编码,界面紧凑,功能全面。 SQLite Expert Personal(推荐5星),只识别sqlite3 官网:http://www.sqliteexpert.com/ 个人免费版,软件大于20M,适合作为SQLite数据编辑工具,可以切换试图编码

发表在 未分类 | 评论关闭

SQLite Alter Table and Alter column type and adding PRIMARY KEY constraint

Altering SQLite column type and adding PK constraint How to change the type of a column in a SQLite table? I’ve got:     CREATE TABLE table(         id INTEGER,         salt TEXT NOT NULL UNIQUE,         step INT,         insert_date TIMESTAMP     ); I’d like to change salt‘s type to just TEXT and id’s type to INTEGER PRIMARY KEY. Answer: Below is an excerpt from the SQLite manual discussing the ALTER TABLE command (see URL: SQLite Alter Table): SQLite supports

发表在 未分类 | 评论关闭

淘宝开放平台的 go 语言 SDK

open_taobao https://github.com/changkong/open_taobao 淘宝开放平台的 go 语言 SDK, MIT许可。 自带web小工具: 可测试基本流程, 可根据 ApiMetadata.xml 重新生成SDK源码并编译, 保持与淘宝同步 版本说明 主包: 0.0.1 子包: 根据淘宝 20130808 的 ApiMetadata.xml 生成 工具程序: 0.0.1 运行环境 操作系统: 由于使用Go原始功能,没有使用cgo,理论上go支持的操作系统都支持,当前只测试了win7 测试环境 win7 go1.1.1 安装说明 安装主包 go get github.com/changkong/open_taobao 安装子包 go get github.com/changkong/open_taobao/api/user 更多子包 用户API: github.com/changkong/open_taobao/api/user 类目API: github.com/changkong/open_taobao/api/item 商品A

发表在 未分类 | 评论关闭

go-sqlite3 安装教程

http://my.oschina.net/Obahua/blog/129689 OS X 1. 通过 Homebrewn 安装: 1 brew install pkgconfig 2 brew install sqlite3 2. 通过 port 安装: 1 sudo port pkgconfig 2 sudo port install sqlite3 3. 如果你在安装后的使用过程遇到 PKG_CONFIG_PATH 有关的问题,可以参考:Mac OS X Lion 安装sqlite3问题。 Ubuntu Ubuntu下的安装总是简单到爆,执行以下命令即可: 1 sudo apt-get install pkg-config 2 sudo apt-get install sqlite3  3 sudo apt-get install libsqlite3-dev Windows Windows下的安装也非常简单,只要到 SQLite3 的下载页面

发表在 未分类 | 评论关闭

硬着陆风险攀升

硬着陆风险攀升 分类:新世纪周刊 2013-11-27 11:12 http://xieguozhong.blog.sohu.com/281694455.html 中国资产泡沫正越来越依靠影子银行体系的融资。利差交易——在海外低利率借入美元贷款并转换为人民币,假借外商直接投资或出口收入的形式,在国内发放高利息贷款——已成为影子银行体系重要的资金来源。最近一线城市地价上涨也可能受此影响。 中国资产泡沫中的非正常融资份额越来越大,将可能以混乱收场。若对泡沫的信心崩溃或流动性大潮退去,投机者退市将陷入混乱,并导致硬着陆。1997年 前,东南亚套利交易催生房市泡沫,美国利率上升触发泡沫崩溃。如今中国正遭受性质类似、但规模更大力量的影响。美联储的量宽政策(QE)已经大幅增加了中 国的货币供应——部分由利差交易实现。如果美联储退出QE,中国的泡沫经济将会崩溃。 真正的改革将会增加对于更好经济前景的投资,从而抵消泡沫经济收缩的负面影响。然而,中国几乎所有的经济问题皆由地方政府的支出和投资最大化引起,惟一有意义的改革就是严格限制政府权力。 硬着陆还是软着陆 日本曾于1992年出现经济软着陆;韩国则

发表在 未分类 | 评论关闭

A list of Go projects.

http://code.google.com/p/gopages/ Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org gowalker gosearch Sourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is dead or broken, please either mark it as such (if you have edit permissions) or mention it in the #go-nuts IRC

发表在 未分类 | 评论关闭

Painless Web Handlers in Go

  Painless Web Handlers in Go Aug 7th, 2012  http://shadynasty.biz/blog/2012/08/07/painless-web-handlers-in-go/ Last time we made a little guestbook application, but there were a couple pain points. We had to have some boiler plate at the top of all of the handlers, and errors were handled by copying the same line of code everywhere. We also had fixed url paths hard coded in handlers and templates. Let’s see how we can fix that. Adding context A lot of the boiler plate in the handlers la

发表在 未分类 | 评论关闭

Hardcore Google: RESTful Web Services In Go

http://joshua.themarshians.com/hardcore-google-communicating-go.html 2013-02-16 (Updated: 2013-03-12) This post is part of a series Hardcore Google. You can find other posts here: Unit Testing App Engine RESTful Web Services In Go RESTful Communication With AngularJS When you first start developing a web application, one of the first big decision you make after choosing your tool set is how these tools will interact with each other. For my project, I had already chosen Go for my back-end, An

发表在 未分类 | 评论关闭