搜尋
首頁資料庫mysql教程一些能体现个人水平的SQL语句_MySQL

一些能体现个人水平的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
个人加入企业微信方法介绍个人加入企业微信方法介绍Mar 26, 2024 am 10:16 AM

1、首先打开自己下载在手机中的企业微信软件。登录时,有两种方式可供选择:一种是使用微信号,另一种是使用手机号。3、这时候就需要企业管理员在后台添加了你的手机号,然后企业微信会根据你的手机号来进行企业的识别。然后显示你的企业,点击下方的进入企业选项。4、然后你就可以进入到软件中功能的使用,可以说最重要的就是必须你的手机号被管理员添加到企业中,不然是无法使用的。

3060显卡的性能如何?3060显卡的性能如何?Jan 27, 2024 am 10:36 AM

有很多游戏玩家对显卡3060表示非常好奇,想入手一张3060的显示,但是不知道RTX3060是在一个什么水平,其实这款显卡也是在一个比较主流的水平。3060显卡什么水平:答:主流水平。这款RTX3060显卡非常受广大玩家的欢迎,并且也在热卖中,其拥有RTX30的系列特有的优点,性价比非常高,对游戏画面要求较高的玩家可以选择这张显卡。3060显卡拓展介绍:帧率:被广大玩家所喜爱,拥有12GB的大显存,非常受欢迎。在12GB的大显存下,能够流畅运行起3A大作无任何卡顿,帧数甚至可达到60。性价比:它

评测麒麟9000s的性能与水平评测麒麟9000s的性能与水平Mar 18, 2024 pm 03:21 PM

麒麟9000s作为今年手机市场的一颗新星,备受关注。伴随着智能手机市场的竞争日益激烈,作为华为公司的旗舰处理器,麒麟系列一直以来都备受瞩目。而作为最新推出的一款处理器,麒麟9000s究竟表现如何,它的性能和水平又如何呢?下面将对麒麟9000s进行评测,从各个方面来剖析其优劣。首先从性能方面来看,麒麟9000s采用了先进的5nm工艺制造,集成了ARM最新的Co

PHP8.0中的multi-catch语句PHP8.0中的multi-catch语句May 14, 2023 pm 01:51 PM

随着Web应用程序的发展,PHP语言在Web开发中得到了广泛应用。而在PHP8.0版本中,一个新的语言特性被引入——multi-catch语句。什么是multi-catch语句?在先前的PHP版本中,对于多个异常类型的处理,开发人员需要写多个catch语句。例如,如下代码块展示了对两种不同异常的处理:try{//Somecodethatmay

如何实现MySQL中解锁表的语句?如何实现MySQL中解锁表的语句?Nov 08, 2023 pm 06:28 PM

如何实现MySQL中解锁表的语句?在MySQL中,表锁是一种常用的锁定机制,用于保护数据的完整性和一致性。当一个事务正在对某个表进行读写操作时,其他事务就无法对该表进行修改。这种锁定机制在一定程度上保证了数据的一致性,但也可能导致其他事务的阻塞。因此,如果一个事务因为某种原因无法继续执行,我们需要手动解锁表,以便其他事务可以继续进行操作。MySQL提供了多种

如何实现MySQL中插入数据的语句?如何实现MySQL中插入数据的语句?Nov 08, 2023 am 11:48 AM

如何实现MySQL中插入数据的语句?在使用MySQL数据库时,插入数据是一项非常基础且常见的操作。通过插入数据,可以将新的记录添加到数据库表中,为业务操作提供支持。本文将介绍如何使用MySQL中的INSERT语句来实现数据插入操作,并提供具体的代码示例。MySQL中的INSERT语句用于向数据库表中插入新的记录。其基本语法格式如下:INSERTINTOt

如何实现MySQL中创建表的语句?如何实现MySQL中创建表的语句?Nov 08, 2023 pm 08:21 PM

如何实现MySQL中创建表的语句?在MySQL数据库中,创建表是非常重要的操作之一。创建表的语句需要考虑到表的结构、字段类型、约束等各种因素,以确保数据存储的准确性和完整性。下面将详细介绍如何在MySQL中创建表的语句,包括具体的代码示例。首先,我们需要连接到MySQL数据库服务器。可以使用以下命令来连接:mysql-uusername-p接着,输入密

如何实现MySQL中收回用户权限的语句?如何实现MySQL中收回用户权限的语句?Nov 08, 2023 pm 01:04 PM

如何实现MySQL中收回用户权限的语句?在MySQL数据库中,我们经常需要管理用户权限。然而,有时候我们可能需要收回某些用户的权限,以保障数据库的安全性。本文将介绍如何使用具体的代码示例来实现在MySQL中收回用户权限的方法。首先,我们需要登录到MySQL数据库服务器,并切换到具有足够权限的用户,例如root用户。然后,我们可以使用REVOKE语句来收回用户

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境