필자는 코드가 제대로 작성되지 않은 전자 상거래 사이트를 유지 관리하는 작업을 계승했으며 많은 코드를 리팩터링하고 진행중인 버그를 수정하려고합니다.데이터베이스 테이블의 인덱스에 auto_increment를 사용하지 않는 이유가 있습니까?
모든 데이터베이스 삽입 (항목을 장바구니에 추가하는 등)은 grab_new_id 함수로 시작합니다.이 함수는 테이블의 행 수를 계산 한 다음 그 수로 시작하여 데이터베이스를 쿼리하여 사용하지 않는 인덱스 번호를 찾습니다. 퍼포먼스 측면에서 끔찍한 것 (이미 40,000 개 이상의 행이 있고 인덱스가 정기적으로 삭제되므로 새 ID를 찾기 위해 수 초가 걸리는 경우도 있습니다) 두 개의 작업이 동시에 수행 될 때 두 개의 항목이 추가 될 때 정기적으로 중단됩니다 중복 된 ID 번호.
이것은 바보처럼 보입니다. 인덱스 필드에서 자동 증가를 사용하지 않는 이유는 무엇입니까? 나는 그것을 두 가지 방법으로 테스트했으며 인덱스 ID를 지정하지 않고 테이블에 행을 추가하는 것은 (분명히) 여러 번 더 빠릅니다. 내 질문은 : 누구든지 원래 프로그래머가 이것을했을 수도있는 어떤 이유라도 생각할 수 있습니까? auto_increment가 어떻게 든 나쁜 형태로 여겨지는 곳이 있다는 생각이 있습니까? 자동 증가 기능이없는 데이터베이스가 있습니까?
나는 reverseBoolean이라는 C#의 함수를 한 번 보았습니다. 모든 것은 매개 변수로 부울을 받아들이고 그 결과로 역을 반환합니다. 지나치게 복잡하고 평범하지 않았습니다. 개발자가 not 연산자를 알지 못했기 때문에 모두. – theChrisKent
데이터베이스에 플래그가 설정된 경우 모든 트래픽을 https로 강제 설정하는 웹 앱에 대한 모든 요청에 대해 코드를 한 번 실행했습니다. 또한 https에서 IIS의 자동 처리 기능을 사용하여 무한 리디렉션 루프를 만들었습니다. 우리가 무슨 일이 일어나고 있는지 알기 전에 그것은 2 일간의 가벼운 awesomesauce였습니다. – Josh
WTF FTW! 그게 내가 생각한 것 ... 그냥 뭔가를 놓치고 있는지 또는이 기능에 대한 숨겨진 이유가 있는지 알고 싶었습니다. – goldenapples