有没有人使用过leveldb?我是在nodejs环境下使用的https://www.npmjs.com/package...
网上搜了资料,感觉还是挺少。更不用说用的人了。
不过没有关系,即使没用过,我下面的问题也可以看看。
我现在面临的问题就是。测试数据一百万左右。如果单独根据key查找,那是非常快速的。
但是我现在需要完成类似于这样的功能
where name='a' order by dateline desc limit 100,50
无论怎样,你都必须得从数据库里面读取完所有的记录,然后再进行排序,然后再截取对应的数据段。
然而,光遍历读取所有的记录,100万条数据,花了4分钟,这个速度明显不能用于实际生产了。
我不明白mysql这种100万条数据,实现上面的sql应该是不到1秒的时间吧?他们到底怎么弄的。
有什么思路吗?
질문자가 데이터베이스의 작동 방식을 오해한 것 같습니다. 데이터베이스는 단순히 배열을 저장하고 사용하기 위해 배열을 정렬하고 100에서 150까지 의
data
순서를 찾는 대신dateline
균형 트리desc
데이터 구조를 사용하여 데이터를 구성하는 경우가 많습니다. (이것 (제한을 잘못 이해한 것일 수도 있음) 모든 데이터를 읽는 대신 균형 트리를 검색하여 크기가 150인 가장 왼쪽 하위 트리를 찾은 다음 이 하위 트리의 오른쪽 하위 트리에서name = 'a'
노드를 찾습니다. 해당 노드의 데이터를 꺼냅니다. 이것이 데이터베이스의 간단한 원리입니다. 실제로 데이터베이스는 데이터의 일부를 외부 저장 장치에 저장한 다음, 이를 검색하면 외부 저장 영역의一条
인덱스를 설정합니다. 외부 저장 장치에 있는 데이터를 메모리에 읽어와서 균형 트리를 만들고, 이 균형 트리를 대상으로 검색을 수행합니다. 이는 데이터를 구성하는 데이터베이스의 구현입니다.mysql에서 이 쿼리문의 실행 시간은 매우 짧지만, 모든 데이터를 가져오려면 시간도 오래 걸립니다.
마지막으로 질문자가 구현한 기능이 아직도 이해가 되지 않습니다. 1. 데이터를 데이터베이스에서 읽어오는 건가요, 아니면 그냥 파일에 저장하는 건가요? 모든 데이터 예를 들어 모든 데이터를 표시해야 하거나 모든 데이터를 다른 파일에 저장해야 합니다. 실제로 속도를 제한하는 병목 현상은 프로그래밍 언어, 운영 체제 등입니다.