一些能体现个人水平的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;

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Mula-mula, buka perisian WeChat perusahaan yang anda muat turun pada telefon mudah alih anda. Apabila log masuk, terdapat dua cara untuk memilih: satu ialah menggunakan WeChat ID, satu lagi ialah menggunakan nombor telefon mudah alih. 3. Pada masa ini, pentadbir perusahaan perlu menambah nombor telefon mudah alih anda di latar belakang, dan kemudian WeChat Perusahaan akan mengenal pasti perusahaan berdasarkan nombor telefon mudah alih anda. Kemudian paparkan perniagaan anda dan klik pilihan Enter Business di bawah. 4. Kemudian anda boleh memasukkan penggunaan fungsi dalam perisian Ia boleh dikatakan bahawa perkara yang paling penting ialah nombor telefon bimbit anda mesti ditambahkan ke perusahaan oleh pentadbir, jika tidak, ia tidak akan tersedia.

Ramai pemain sangat ingin tahu tentang kad grafik 3060 dan ingin membeli paparan 3060, tetapi mereka tidak tahu tahap mana RTX 3060 sebenarnya, kad grafik ini juga berada pada tahap yang agak perdana. Apakah tahap kad grafik 3060: Jawapan: Tahap arus perdana. Kad grafik RTX3060 ini sangat popular di kalangan pemain dan juga dijual Ia mempunyai kelebihan unik siri RTX30 dan sangat menjimatkan kos Pemain yang mempunyai keperluan yang lebih tinggi untuk grafik permainan boleh memilih kad grafik ini. Pengenalan pengembangan kad grafik 3060: Kadar bingkai: Ia disukai oleh majoriti pemain Ia mempunyai memori video yang besar sebanyak 12GB dan sangat popular. Dengan 12GB memori video yang besar, ia boleh menjalankan karya agung AAA dengan lancar tanpa sebarang lag, malah kadar bingkai boleh mencapai 60. Nilai untuk wang: ia

Sebagai bintang baharu dalam pasaran telefon bimbit tahun ini, Kirin 9000s telah menarik perhatian ramai. Memandangkan persaingan dalam pasaran telefon pintar menjadi semakin sengit, sebagai pemproses utama Huawei, siri Kirin sentiasa menarik perhatian ramai. Sebagai pemproses terkini, bagaimanakah prestasi Kirin 9000s Apakah prestasi dan tahapnya? Berikut akan menilai Kirin 9000s dan menganalisis kelebihan dan kekurangannya dari pelbagai aspek. Pertama sekali, dari perspektif prestasi, Kirin 9000s dihasilkan menggunakan proses 5nm termaju dan menyepadukan Co terbaru ARM

Dengan perkembangan aplikasi web, bahasa PHP telah digunakan secara meluas dalam pembangunan web. Dalam versi PHP8.0, ciri bahasa baharu telah diperkenalkan - pernyataan multi-catch. Apakah pernyataan berbilang tangkapan? Dalam versi PHP sebelumnya, pembangun perlu menulis berbilang kenyataan tangkapan untuk mengendalikan berbilang jenis pengecualian. Sebagai contoh, blok kod berikut menunjukkan pengendalian dua pengecualian berbeza: cuba{//Somecodethatmay

Bahagian boleh tatal secara mendatar ialah corak reka bentuk web biasa yang digunakan untuk memaparkan kandungan yang melebihi lebar port pandangan. Corak reka bentuk ini membolehkan pengguna menatal secara mendatar, menyediakan cara yang unik dan menarik untuk memaparkan imej besar, galeri, garis masa, peta dan kandungan lain. Ini dicapai dengan menggunakan sifat CSS seperti overflow−x:auto atau overflow−x:scroll. Ini menggunakan fungsi penyemak imbas asli untuk menatal mendatar dan responsif merentas peranti. Membenarkan navigasi mudah dan penerokaan kandungan. Ia tidak memerlukan sebarang perpustakaan atau pemalam tambahan. Algoritma menggunakan kelas "bekas" untuk menentukan elemen kontena. Tetapkan sifat "overflow−x" bekas kepada "auto" untuk mendayakan penatalan mendatar. bekas

Bagaimana untuk melaksanakan pernyataan memasukkan data dalam MySQL? Apabila menggunakan pangkalan data MySQL, memasukkan data adalah operasi yang sangat asas dan biasa. Dengan memasukkan data, rekod baharu boleh ditambah pada jadual pangkalan data untuk menyediakan sokongan untuk operasi perniagaan. Artikel ini akan memperkenalkan cara menggunakan pernyataan INSERT dalam MySQL untuk melaksanakan operasi pemasukan data dan memberikan contoh kod khusus. Pernyataan INSERT dalam MySQL digunakan untuk memasukkan rekod baru ke dalam jadual pangkalan data. Format sintaks asasnya adalah seperti berikut: INSERTINTOt

Untuk mempelajari Python dari awal, fahami dahulu jenis pernyataan kawalan aliran! Python ialah bahasa pengaturcaraan yang ringkas dan berkuasa yang digunakan secara meluas dalam analisis data, kecerdasan buatan, pembangunan rangkaian dan pelbagai bidang pengkomputeran saintifik. Sebagai seorang pemula, sangat penting untuk menguasai pernyataan kawalan aliran asas, kerana ia adalah asas untuk merealisasikan pertimbangan logik dan mengawal aliran pelaksanaan program. Dalam Python, terdapat tiga jenis utama pernyataan kawalan aliran: struktur berjujukan, struktur bersyarat dan struktur gelung. Berikut akan memperkenalkan tiga penyataan kawalan proses ini secara terperinci dan memberikan yang sepadan

Penggunaan pernyataan cuba dalam C# memerlukan contoh kod khusus C# ialah bahasa pengaturcaraan berorientasikan objek, di mana pernyataan cuba adalah struktur yang digunakan untuk menangkap dan mengendalikan pengecualian. Melalui pernyataan cuba, kita boleh menulis kod untuk mengendalikan pengecualian yang mungkin berlaku, dengan itu meningkatkan kestabilan dan kebolehpercayaan program. Dalam artikel ini, kami akan memperkenalkan penggunaan pernyataan cuba dalam C# dan menyediakan beberapa contoh kod khusus untuk membantu pembaca memahami. Dalam C#, pernyataan try terdiri daripada try block, catch block dan optionalfina
