본문 바로가기

반응형

프로그래밍/MySQL

(7)
워드프레스 설치시, "데이터베이스 연결 중 오류" 발생. # mysql -u root -p mysql > alter user 'root'@'localhost' identified with mysql_native_password by 'pw123'; mysql > flush privileges; 서버에 워드프레스를 설치하려고 했는데, "데이터베이스 연결 중 오류" 가 발생했다. 실제로 연결을 시도해보니 로그인이 되지 않고 있는 점을 발견했고, 아래와 같이 해결했다. 문제는 인증체계가 바뀌어서 그런것인데, php7.4 이상으로 업그레이드해주거나, mysql 에서 alter user 로 native passwod (기존 인증방식)을 사용하도록 해주면 된다.
실수로 용량이 큰 테이블에 OPTIMIZE TABLE을 실행 했을 때 용량이 14gb에 달하는 테이블을 아무런 생각도 없이 PMA에서 "테이블 최적화" 를 눌러버렸다. 서버에서 그 즉시 mysql 프로세스가 먹는 메모리와 CPU가 급증하고 멈추기만을 기다렸다. 장장 7시간이 넘게 소요되었다.. 이걸 강제로 멈춘다면 테이블이 crash가 발생할수도 있다라는 글을 여럿 발견하고는 아무런 일도 할수 없었다. 그럼 이 작업이 언제 끝났는지를 알수 있었냐면, PMA또는 터미널상에서의 mysql command를 통해 가능하다. PMA 에서는 "서버 > 상태 > 프로세스" 로 접근하면, 당당히 목록에 "OPTIMIZE TABLE XXX"가 열심히 작업 중일 것이다.. 터미널에서는 mysql -u root -p 로 로그인하여 mysql command로 들어가 "SHOW PROCESSLI..
[MySQL] Where In & SubQuery 는 최악! JOIN & MAX & GROUP BY 사용 최근에 구축 중인 사이트가 있는데, 방대한 양의 시세 정보 데이터를 적재하고 이를 검색서비스를 제공하는 사이트이다. 여러 다른서버들이 있어 다른서버의 시세도 한눈에 보게끔 해주고 싶었는데, 아무 생각 없이 where 에 in 으로 서브 쿼리를 넣어 주는걸로 작성을 해주었더니, 시간이 매우 오래 걸렸다. SELECT * FROM auction WHERE idx IN ( SELECT MAX(idx) FROM auction WHERE item_id = :item_id GROUP BY realm_id, auction_house_id, item_id) ORDER BY price_min DESC; 위 쿼리의 결과가 도출되는데 4초에서 6초가 소요되었다. 개선을 해볼수 있지 않을까 싶어 여러 검색을 해보았는데, wh..
MySQL 기본적인 모니터링 방법과 Connection과 Memory 튜닝 방법 MySQL Database의 경우 Oracle 이나 MS SQL Server에 비해서 대용량의 자료를 처리하는 경우가 적기에 튜닝에 필요성이 적은 것 같습니다. 그러나 웹이라는 환경은 많은 사용자가 동시에 접속을 할 수 있기에 항상 모니터링과 최적화는 기본이라고 생각합니다. 본 강좌에서는 기본적인 모니터링 방법과 Connection과 Memory 부분에 대한 튜닝 방법을 소개하도록 하겠습니다. 가. 모니터링 및 초기화 명령어 show status - MySQL 데이타베이스의 현재 상황 show Processlist - MySQL 프로세스 목록 show variables - 설정 가능한 모든 변수 목록 flush logs - MySQL의 로그파일 초기화 flush status - MySQL 상태정보 초기화..
Running a syntax check on /etc/my.cnf Usually, I update variables on the fly using something like: mysql> SET GLOBAL max_connections = 150; … and then modify /etc/my.cnf to make the change persistent. The problem in doing this is that you’re not verifying that your /etc/my.cnf is correct and can only hope that a restart doesn’t encounter any problems. Fortunately, Sai emailed us a great little tip to verify the syntax. You can run t..
mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead [duplicate] Simply put, you need to rewrite all of your database connections and queries. You are using mysql_* functions which are now deprecated and will be removed from PHP in the future. So you need to start using MySQLi or PDO instead, just as the error notice warned you. A basic example of using PDO (without error handling):
MYSQL에서 랜덤으로 데이터 읽어오기 예) select * from table_name order by rand() limit 10 ; 위에서 table_name 에는 자신이 랜덤으로 데이터를 뽑을 테이블의 이름이며 10은 자신이 랜덤으로 몇개의 데이터를 뽑을것인지 쓰는 곳이다. 예를들어 자신이 aaa라는 테이블에서 7개의 임의의 데이터를 읽어오려면 select * from aaa order by rand() limit 7 ; 라고 쓰면 된다.

반응형