2017-09-25 1 views
0

edit에서 innodb_buffer_pool_sizehttps://console.cloud.google.com으로 설정할 수 없습니다. 단지이 매개 변수가 없습니다.Google 클라우드 SQL에서 mysql에 innodb_buffer_pool_size를 설정하는 방법은 무엇입니까?

나는 또한 SQL로 innodb_buffer_pool_size을 설정할 수 없습니다 :

mysql> SET GLOBAL innodb_buffer_pool_size=2147483648; 
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation 
+0

'실제'문제는 메모리 사용량이 컴퓨터 RAM 근처에있을 때 항상 재시작되는 Google 클라우드 SQL 인스턴스입니다. 커밋되지 않은 트랜잭션의 데이터 크기가 200M보다 크고 SQL의 qps는 약 3K/s입니다. –

답변

1

그것은하실 수 없습니다 - 우리는 항상 기계 RAM의 75 % 같은 것으로 innodb_buffer_pool_size을 설정합니다.

경우에 따라 연결 버퍼 당 메모리가 더 필요하고 innodb_buffer_pool_size은 적어집니다. 우리는 그러한 조건을 자동으로 감지하고 innodb_buffer_pool_size을 줄이는 방법에 대한 아이디어를 가지고 있지만 실제로는 아무 것도 없습니다.

실용적인 해결 방법은 인스턴스 크기를 늘리는 것입니다. 메모리가 많을수록 트랜잭션 당 버퍼가 더 많이 필요합니다. 다른 덜 현실적인 해결 방법은 동시 쿼리 실행 횟수를 줄이거 나 연결 수가 제한된 연결 풀을 사용하거나 쿼리를 단순화하여 데이터베이스에 대한 부하를 줄이는 것입니다 (JOIN 등이 적음).

+0

innodb_buffer_pool_size의 비율을 10 %에서 75 %까지 변경할 수 있다는 점이 좋습니다. 연결 풀을 사용했습니다. 최대 동시 스레드 수를 최대 10 개까지 자동으로 다시 시작합니다. 최대 스레드 수를 5 개로 제한하지 만 최대 동시 스레드 수는 5 개로 제한됩니다. 내가 사용하는 SQL은 join.Just xxx (xxx, xxx), (xxx, xxx)로 바꾸고 xx, xx를 xx (xx, xx) xx에서 선택하십시오. 나는 커밋되지 않은 트랜잭션의 데이터 크기를 생각합니다. 너무 많이 있습니다. –

관련 문제