2013-10-25 3 views
0

저는 100 개가 넘는 컬럼으로 구성된 SQL Server 2012의 꽤 뚱뚱한 설정 테이블을 가지고 있습니다. 이름에서 알 수 있듯이이 표는 웹 사이트에서 모든 종류의 설정 값을 추적합니다. 이전에는 50 열 미만 이었지만 이제는 그 크기가 두 배가됩니다.설정 테이블이 커지는 것에 대해 걱정해야합니까?

데이터베이스에 설정 값을 저장하는 이유는 사용자가 UI를 통해 이러한 설정을 변경할 수 있어야하기 때문입니다.

시간이 지남에 따라이 테이블이 점점 커질 까봐 걱정해야합니까? 또는 설정 데이터를 저장하는 다른 방법을 찾아야합니다 (예 : 파일에 저장하는 등)? 좋은 제안이야?

감사합니다.

답변

1

먼저 사용자가 런타임에 설정을 업데이트하기 위해 데이터베이스에 설정을 저장하지 않아도됩니다. 사용자가 변경 될 때마다 업데이트되는 설정 파일에 간단하게 저장할 수 있습니다. 이것은 XML 설정 파일이며 잘 작동합니다.

그러나 응용 프로그램이 네트워크를 기반으로하고 사용자가 컴퓨터에서 시스템으로 사용자의 설정을 따르도록하려면 해당 설정을 데이터베이스에 저장하는 것이 좋습니다.

둘째로, 예 ... 100 개의 열이 큽니다. 별도의 열에 각 설정을 저장하는 대신 별도의 행에 각 설정을 저장 한 다음 ID, SettingName, SettingValue, (아마도) DefaultValue 인 공통 행 형식을 사용할 수도 있습니다. 그러면 테이블은 원하는만큼 커질 수 있습니다.

1

우리는 사용자 설정을 저장하기 위해 JSON을 사용하고 있습니다. 이 테이블은 사용자 ID와 설정 문자열이라는 두 개의 열만 가져옵니다. 이 문자열은 꽤 길지만 중요하지 않습니다. XML을 사용하여이 데이터를 저장할 수도 있습니다.

이것은 손가락으로 데이터를 수정하는 더 나쁜 해결책이지만 클라이언트 나 ASP.NET 서버가 DB와 프로세스를 빠져 나오는 것이 더 빠릅니다.

1

거대한 테이블의 성능에 대해 우려하고 있습니다.

하나의 질문은이 테이블에서 몇 행입니까? 10000 개의 행이있는 100 개의 열은 실제 문제가 아닙니다. 천만 줄 이상의 100 열은 약간 다른 볼 게임입니다. 더 나쁘지 않고, 단지 다릅니다.

같은 고려 사항

는 크고 작은 테이블에 적용 1.
2. 귀하의 IO가 제대로 색인 미세 3. 4. 효율적으로

질의 미세 당신의 공간이 더있다가 없습니다 이에 대한 정답은 왜 큰 열 개수가 있고 전반적인 성능에 영향을 미치는지에 달려 있습니다. 150 개 이상의 열과 문제가없는 1000 개의 테이블을 실행합니다. 수백만 개의 행이 있어도 성능에 대해 불만을 토로 할 수는 없습니다. 그리고 이것은 상대적으로 정규화되지 않은 데이터이므로 많은 텍스트가 있습니다.

관련 문제