데이터 베이스 MySQL 튜토리얼 一些能体现个人水平的SQL语句_MySQL

一些能体现个人水平的SQL语句_MySQL

May 30, 2016 pm 05:10 PM
개인의 수준 성명

一些能体现个人水平的SQL语句

 

作为一名小小的开发人员,刚入门的时候觉得很难,过了一段时间之后,发现很简单,很快就可以搞定很bug了。然而这并不能说明你就已经很牛掰了,只能说,你不了解其他太多的东西。应该说,数据库有几个共同的命令,select , update , insert, replace, delete , truncate, drop,只要你学会了,你就感觉你可以为所欲为了。但是在这里,我要总结一些体现水平的语句,而这些东西恰好直接体现你个人的水平和经验问题。

 

1、show processlist : 查看mysql的进程情况,在网站很慢的时候,你应该要想到是不是有很多死的进程或者很耗时的进程,如果确实是这样,那你应该结束到一些。 kill 99 .

 

执行状态分析:

 

Sleep状态通常代表资源未释放,如果是通过连接池,sleep状态应该恒定在一定数量范围内,实战范例:因前端数据输出时(特别是输出到用户终端)未及时关闭数据库连接,导致因网络连接速度产生大量sleep连接,在网速出现异常时,数据库too many connections挂死 Waiting for net, reading from net, writing to net

 

偶尔出现无妨,如大量出现,迅速检查数据库到前端的网络连接状态和流量

 

案例:因外挂程序,内网数据库大量读取,内网使用的百兆交换迅速爆满,导致大量连接阻塞在waiting for net,数据库连接过多崩溃Locked状态,有更新操作锁定,通常使用innodb可以很好的减少locked状态的产生,但是切记,更新操作要正确使用索引,即便是低频次更新操作也不能疏忽。如上影响结果集范例所示。在myisam的时代,locked是很多高并发应用的噩梦。所以mysql官方也开始倾向于推荐innodb。

 

Copy to tmp table

 

索引及现有结构无法涵盖查询条件,才会建立一个临时表来满足查询要求,产生巨大的恐怖的i/o压力。很可怕的搜索语句会导致这样的情况,如果是数据分析,或者半夜的周期数据清理任务,偶尔出现,可以允许。频繁出现务必优化之。

 

Copy to tmp table通常与连表查询有关,建议逐渐习惯不使用连表查询。

 

实战范例:

 

u 某社区数据库阻塞,求救,经查,其服务器存在多个数据库应用和网站,其中一个不常用的小网站数据库产生了一个恐怖的copy to tmp table操作,导致整个硬盘i/o和cpu压力超载。Kill掉该操作一切恢复。

 

Sending data

 

Sending data并不是发送数据,别被这个名字所欺骗,这是从物理磁盘获取数据的进程,如果你的影响结果集较多,那么就需要从不同的磁盘碎片去抽取数据,偶尔出现该状态连接无碍。回到上面影响结果集的问题,一般而言,如果sending data连接过多,通常是某查询的影响结果集过大,也就是查询的索引项不够优化。

 

如果出现大量相似的SQL语句出现在show proesslist列表中,并且都处于sending data状态,优化查询索引,记住用影响结果集的思路去思考。

 

Storing result to query cache出现这种状态,如果频繁出现,使用setprofiling分析,如果存在资源开销在SQL整体开销的比例过大(即便是非常小的开销,看比例),则说明query cache碎片较多,使用flush query cache可即时清理,也可以做成定时任务

 

Query cache参数可适当酌情设置。

 

Freeing items

 

理论上这玩意不会出现很多。偶尔出现无碍,如果大量出现,内存,硬盘可能已经出现问题。比如硬盘满或损坏。

 

i/o压力过大时,也可能出现Free items执行时间较长的情况。

 

Sorting for 和Sending data类似,结果集过大,排序条件没有索引化,需要在内存里排序,甚至需要创建临时结构排序。

 

其他还有很多状态,遇到了,去查查资料。基本上我们遇到其他状态的阻塞较少,所以不关心

 

2、checksum 在逻辑备份时候前后是否可以用于验证数据一致性;

 

   load data [local] infile $filename INTO TABLE table_name TERMINATED BY ',',从文件导入数据到数据库中。

 

指定Windows 路径名时,使用的是斜线而不是反斜线。如果要用反斜线,必须双写。

 

出于安全的原因,当读取位于服务器上的文本文件时,文件必须位于数据库目录下或者可以被所有用户读取。也就是说,当对服务器上的文件执行LOAD DATA INFILE 时,用户必须获得FILE 权限。

 

3、索引: 不必要的索引只会占用空间和时间,建立必要索引,唯一索引,主键索引。

 

4、联表操作:更新,updatetable1 t1 left join table2 t2 on t1.uid=t2.uid set t1.name=t2.name,t1.desc='xxxx' where t1.date='2015-10-11';删除:delete t1,t2,t3from table1 t1 left join table2 t2 on t1.uid=t2.uid inner join table3 t3 ont2.uid = t3.uid where t1.date='2015-10-11';事务:set@@autocommit=0;

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

개인이 기업 위챗에 가입하는 방법 소개 개인이 기업 위챗에 가입하는 방법 소개 Mar 26, 2024 am 10:16 AM

1. 먼저 휴대폰에 다운로드한 기업 위챗 소프트웨어를 엽니다. 로그인 시 선택하는 방법은 두 가지가 있습니다. 하나는 WeChat ID를 사용하는 것이고, 다른 하나는 휴대폰 번호를 사용하는 것입니다. 3. 이때 기업 관리자는 백그라운드에서 귀하의 휴대폰 번호를 추가해야 하며, 그러면 기업 WeChat이 귀하의 휴대폰 번호를 기반으로 기업을 식별합니다. 그런 다음 귀하의 비즈니스를 표시하고 아래의 비즈니스 입력 옵션을 클릭하세요. 4. 그런 다음 소프트웨어에서 기능 사용을 입력할 수 있습니다. 가장 중요한 것은 관리자가 귀하의 휴대폰 번호를 기업에 추가해야 한다는 것입니다. 그렇지 않으면 사용할 수 없습니다.

3060 그래픽카드 성능은 어떤가요? 3060 그래픽카드 성능은 어떤가요? Jan 27, 2024 am 10:36 AM

많은 게이머들이 그래픽 카드 3060에 대해 매우 궁금해하고 3060 디스플레이를 구입하고 싶어하지만 RTX 3060이 어느 수준인지는 사실 잘 모릅니다. 사실 이 그래픽 카드도 비교적 주류 수준입니다. 3060 그래픽 카드의 수준은 무엇입니까: 답변: 주류 수준. 이 RTX3060 그래픽 카드는 플레이어들 사이에서 매우 인기가 높으며 판매 중입니다. RTX30 시리즈의 고유한 장점을 가지고 있으며 게임 그래픽에 대한 요구 사항이 더 높은 플레이어는 이 그래픽 카드를 선택할 수 있습니다. 3060 그래픽 카드 확장 소개: 프레임 속도: 12GB의 대용량 비디오 메모리를 갖추고 있어 대다수의 플레이어에게 사랑받고 있습니다. 12GB의 대용량 비디오 메모리로 AAA 명작을 지연 없이 원활하게 실행할 수 있으며 프레임 속도는 60까지 도달할 수 있습니다. 가격 대비 가치: 이

Kirin 9000s의 성능과 수준을 평가해 보세요. Kirin 9000s의 성능과 수준을 평가해 보세요. Mar 18, 2024 pm 03:21 PM

올해 휴대폰 시장의 새로운 스타로 자리잡은 기린 9000s가 많은 주목을 받았다. 스마트폰 시장의 경쟁이 점점 치열해지면서 Huawei의 주력 프로세서인 Kirin 시리즈는 항상 많은 관심을 받아왔습니다. 최신 프로세서인 Kirin 9000s의 성능과 수준은 어떻습니까? 다음은 Kirin 9000s를 평가하고 다양한 측면에서 장점과 단점을 분석해 보겠습니다. 우선, 성능 측면에서 Kirin 9000s는 고급 5nm 공정을 사용하여 제조되었으며 ARM의 최신 Co를 통합했습니다.

PHP8.0의 다중 캐치 문 PHP8.0의 다중 캐치 문 May 14, 2023 pm 01:51 PM

웹 애플리케이션이 개발되면서 PHP 언어가 웹 개발에 널리 사용되었습니다. PHP8.0 버전에서는 새로운 언어 기능인 multi-catch 문이 도입되었습니다. 다중 캐치 문이란 무엇입니까? 이전 PHP 버전에서는 개발자가 여러 예외 유형을 처리하기 위해 여러 catch 문을 작성해야 했습니다. 예를 들어, 다음 코드 블록은 두 가지 다른 예외의 처리를 보여줍니다.

CSS에서 가로 스크롤 가능 섹션 만들기 CSS에서 가로 스크롤 가능 섹션 만들기 Aug 29, 2023 am 09:29 AM

가로로 스크롤 가능한 섹션은 뷰포트 너비를 초과하는 콘텐츠를 표시하는 데 사용되는 일반적인 웹 디자인 패턴입니다. 이 디자인 패턴을 사용하면 사용자가 가로로 스크롤하여 큰 이미지, 갤러리, 타임라인, 지도 및 기타 콘텐츠를 표시하는 독특하고 매력적인 방법을 제공할 수 있습니다. 이는 Overflow-x:auto 또는 Overflow-x:scroll과 같은 CSS 속성을 사용하여 달성됩니다. 이는 수평 스크롤을 위한 기본 브라우저 기능을 사용하며 여러 장치에서 반응합니다. 콘텐츠를 쉽게 탐색하고 탐색할 수 있습니다. 추가 라이브러리나 플러그인이 필요하지 않습니다. 알고리즘은 "컨테이너" 클래스를 사용하여 컨테이너 요소를 정의합니다. 가로 스크롤을 활성화하려면 컨테이너의 "overflow-x" 속성을 "auto"로 설정하세요. 컨테이너

MySQL에 데이터 삽입 명령문을 구현하는 방법은 무엇입니까? MySQL에 데이터 삽입 명령문을 구현하는 방법은 무엇입니까? Nov 08, 2023 am 11:48 AM

MySQL에 데이터 삽입 명령문을 구현하는 방법은 무엇입니까? MySQL 데이터베이스를 사용할 때 데이터 삽입은 매우 기본적이고 일반적인 작업입니다. 데이터를 삽입하면 새로운 레코드를 데이터베이스 테이블에 추가하여 비즈니스 운영을 지원할 수 있습니다. 이 기사에서는 MySQL에서 INSERT 문을 사용하여 데이터 삽입 작업을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. MySQL의 INSERT 문은 데이터베이스 테이블에 새 레코드를 삽입하는 데 사용됩니다. 기본 구문 형식은 다음과 같습니다. INSERTINTOt

Python 흐름 제어문의 유형을 마스터하고 처음부터 배우세요! Python 흐름 제어문의 유형을 마스터하고 처음부터 배우세요! Jan 20, 2024 am 09:02 AM

Python을 처음부터 배우려면 먼저 흐름 제어문의 유형을 이해하세요! Python은 데이터 분석, 인공 지능, 네트워크 개발 및 다양한 과학 컴퓨팅 분야에서 널리 사용되는 간단하고 강력한 프로그래밍 언어입니다. 기본적인 흐름제어문은 논리적 판단을 구현하고 프로그램 실행 흐름을 제어하는 ​​기초가 되기 때문에 초보자로서 기본적인 흐름제어문을 익히는 것이 매우 중요합니다. Python에는 순차 구조, 조건 구조 및 루프 구조라는 세 가지 주요 유형의 흐름 제어 문이 있습니다. 다음은 이 세 가지 프로세스 제어 설명을 자세히 소개하고 해당 내용을 제공합니다.

C# try 문 사용법 C# try 문 사용법 Feb 22, 2024 pm 12:45 PM

C#에서 try 문을 사용하려면 특정 코드 예제가 필요합니다. C#은 try 문이 예외를 캡처하고 처리하는 데 사용되는 구조인 개체 지향 프로그래밍 언어입니다. try 문을 통해 발생할 수 있는 예외를 처리하는 코드를 작성할 수 있어 프로그램의 안정성과 신뢰성이 향상됩니다. 이 글에서는 C#에서 try 문을 사용하는 방법을 소개하고 독자의 이해를 돕기 위해 몇 가지 구체적인 코드 예제를 제공합니다. C#에서 try 문은 try 블록, catch 블록 및 optionfina로 구성됩니다.

See all articles