Redian新闻
>
如何实现DB底层的功能?
avatar
如何实现DB底层的功能?# Database - 数据库
n*e
1
我用MySQL, 感觉速度不够理想. 一共有两个table,
需要对其中一个作关于某长度为256的字符串字段
unique的添加, 直到几百万个记录. 数据库的好处是
可以帮我实现index, 但是为此不得不不停的跟mysqld
通信, insert into ..., 额外的开销实在太大了. 我
的程序的其他部分每秒中能产生30个单位输出, 包括将
30*10K的数据存到硬盘. 但是接上数据库以后, 每秒只
能存10个, 相当于几百次insert, 几十次select. 数据
库大了以后, 还会更慢. 我想能不能自己做个带索引的
记录文件呢? 有没有现成的可download的源码?
有经验的请指导.
avatar
xt
2

你指望你写的东西比数据库里面现成的好?come on....
你可以考虑其它优化方法呀,比如对数据库本身的tuning.

【在 n******e 的大作中提到】
: 我用MySQL, 感觉速度不够理想. 一共有两个table,
: 需要对其中一个作关于某长度为256的字符串字段
: unique的添加, 直到几百万个记录. 数据库的好处是
: 可以帮我实现index, 但是为此不得不不停的跟mysqld
: 通信, insert into ..., 额外的开销实在太大了. 我
: 的程序的其他部分每秒中能产生30个单位输出, 包括将
: 30*10K的数据存到硬盘. 但是接上数据库以后, 每秒只
: 能存10个, 相当于几百次insert, 几十次select. 数据
: 库大了以后, 还会更慢. 我想能不能自己做个带索引的
: 记录文件呢? 有没有现成的可download的源码?

avatar
n*e
3
不指望. 但是数据库太笨重. 每个query都必须用sql语句
提交, 是不是太浪费时间了? 而且涉及跟sqld的通信,
....
avatar
s*k
4

Read classical book of Stevens, you can find
a chapter on dbm programming(or man dbm).
You can use sequential index on nearly
every unix platform.
If you use newer version linux, you also can
use B tree.
Good luck! :-)

【在 n******e 的大作中提到】
: 我用MySQL, 感觉速度不够理想. 一共有两个table,
: 需要对其中一个作关于某长度为256的字符串字段
: unique的添加, 直到几百万个记录. 数据库的好处是
: 可以帮我实现index, 但是为此不得不不停的跟mysqld
: 通信, insert into ..., 额外的开销实在太大了. 我
: 的程序的其他部分每秒中能产生30个单位输出, 包括将
: 30*10K的数据存到硬盘. 但是接上数据库以后, 每秒只
: 能存10个, 相当于几百次insert, 几十次select. 数据
: 库大了以后, 还会更慢. 我想能不能自己做个带索引的
: 记录文件呢? 有没有现成的可download的源码?

avatar
n*e
5
stevens那个我知道. 但是他只能做demo.
他使用的是hashtalbe. 做不了大的.

【在 s*k 的大作中提到】
:
: Read classical book of Stevens, you can find
: a chapter on dbm programming(or man dbm).
: You can use sequential index on nearly
: every unix platform.
: If you use newer version linux, you also can
: use B tree.
: Good luck! :-)

avatar
xt
6

现在的数据库索引主要有两种,一种是hashing, 一种是
B+ tree. hasing 比B+ tree稍微快点,但是出来的结果
没有排序,B+ tree出来的结果是排序的,因此我觉得可
能用得多点。这就是为什么index有clustered和unclustered
之分。大概还有的数据库允许user来规定index的数据结构,
这样的话,我认为对clustered index,最好用B+ tree;
对使用order by多的unclustered index,用B+,否则可以
选择Hash table.
Space本身不是问题。

【在 n******e 的大作中提到】
: stevens那个我知道. 但是他只能做demo.
: 他使用的是hashtalbe. 做不了大的.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。