캐시 시스템이 필요한 프로그램을 작성하고있었습니다. 그래서 설명은 4 개의 열, 'mac', 'src', 'username', 'main'이있는 mysql db를가집니다. 어떤 mac, src, username이 주 테이블의 키/값 및 외래 키입니까? 그것들은 3 번에 먼저 삽입하고 ID를 메인에 넣을 것입니다. 내가 얻은 데이터는 주 테이블의 경우 약 18m이며,이 테이블의 경우 약 2m입니다. main에 삽입해야 할 때마다 select를 사용하고 싶지 않으므로 배열을 캐시에 사용했습니다. $ hash = [ 'mac'=> [], 'src'=> [], 'username'=> []]; 그리고 다음과 같이 'n 데이터 가져 오기'를 저장하십시오 : $ hash [ 'mac'] [ '54 : 52 : 00 : 27 : e4 : 91'];PHP 캐시 메커니즘
이 접근법은 해시 데이터가 500k를 초과하면 성능이 저하됩니다. 이렇게하려면 더 좋은 방법이 있습니까?
추신 : nodeJS에서 hashtable이라는 npm 모듈을 사용하고 성능이 약 10k 인 경우 각 4m를 삽입 한 것과 같은 결과를 얻었습니다. 나는 php 배열에 대해 읽었으며 Hashtable이라는 것을 알았지 만 지금은 훨씬 더 낮은 방식으로 동일한 작업을 수행한다. 단 1k만으로는 적어도 5 분이 걸린다.
는 용서하지만 당신이 필요로하는 이유를 나에게 분명하지 않다 거기에 무엇이든의 캐시를 사용합니다. 삽입 작업 만하는 경우 왜 매회 막대한 양의 데이터를 선택해야합니까? 어쩌면 테이블 구조에 대해 더 자세히 설명하면 더 잘 이해할 수 있습니다. – jaswrks
@ jaswrks 예를 들어 설명해 드리겠습니다. 'mac'표에 , 2 백만 개의 데이터, ID 및 값이 있습니다. ID = 100100, 값 = '54 : 52 : 00 : 27 : e4 : 91 '; 내 메인 테이블에서 행을 삽입해야하므로 '54 ID : 54 : 52 : 00 : 27 : e4 : 91 'whichis 100100'의 'mac ID'가 필요합니다. 아주 나쁜 수행 할 삽입 선택 쿼리를 수행 할 수 또는 일종의 캐시 시스템에서 수행하십시오. 그리고 그게 좋지 않다고 생각하면 저를 고치세요. –