Monty说MySQL的优化(五)_MySQL
二十一、MySQL表高速缓存工作原理
每个MyISAM表的打开实例(instance)使用一个索引文件和一个数据文件。如果表被两个线程使用或在同一条查询中使用两次,MyIASM将共享索引文件而是打开数据文件的另一个实例。
如果所有在高速缓存中的表都在使用,缓存将临时增加到比表缓存尺寸大些。如果是这样,下一个被释放的表将被关闭。
你可以通过检查mysqld的Opened_tables变量以检查表缓存是否太小。如果该值太高,你应该增大表高速缓存。
二十二、MySQL扩展/优化-提供更快的速度
使用优化的表类型(HEAP、MyIASM或BDB表)。
对数据使用优化的列。
如果可能使用定长行。
使用不同的锁定类型(SELECT HIGH_PRIORITY,INSERT LOW_PRIORITY)
Auto_increment
REPLACE (REPLACE INTO table_name VALUES (...))
INSERT DELAYED
LOAD DATA INFILE / LOAD_FILE()
使用多行INSERT一次插入多行。
SELECT INTO OUTFILE
LEFT JOIN, STRAIGHT JOIN
LEFT JOIN ,结合IS NULL
ORDER BY可在某些情况下使用键码。
如果只查询在一个索引中的列,将只使用索引树解决查询。
联结一般比子查询快(对大多数SQL服务器亦如此)。
LIMIT
SELECT * from table1 WHERE a > 10 LIMIT 10,20
DELETE * from table1 WHERE a > 10 LIMIT 10
foo IN (常数列表) 高度优化。
GET_LOCK()/RELEASE_LOCK()
LOCK TABLES
INSERT和SELECT可同时运行。
UDF函数可装载进一个正在运行的服务器。
压缩只读表。
CREATE TEMPORARY TABLE
CREATE TABLE .. SELECT
带RAID选项的MyIASM表将文件分割成很多文件以突破某些文件系统的2G限制。
Delay_keys
复制功能
二十二、MySQL何时使用索引
对一个键码使用>, >=, =, 1 and key_part1
如果使用HEAP表且不用=搜索所有键码部分。
在HEAP表上使用ORDER BY。
如果不是用键码第一部分
SELECT * FROM table_name WHERE key_part2=1
如果使用以一个通配符开始的LIKE
SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'
搜索一个索引而在另一个索引上做ORDER BY
SELECT * from table_name WHERE key_part1 = # ORDER BY key2
二十四、学会使用EXPLAIN
对于每一条你认为太慢的查询使用EXPLAIN!
mysql> explain select t3.DateOfAction, t1.TransactionID
-> from t1 join t2 join t3
-> where t2.ID = t1.TransactionID and t3.ID = t2.GroupID
-> order by t3.DateOfAction, t1.TransactionID;
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+
| t1 | ALL | NULL | NULL | NULL | NULL | 11 | Using temporary; Using filesort |
| t2 | ref | ID | ID | 4 | t1.TransactionID | 13 | |
| t3 | eq_ref | PRIMARY | PRIMARY | 4 | t2.GroupID | 1 | |
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+
ALL和范围类型提示一个潜在的问题。
二十五、学会使用SHOW PROCESSLIST
使用SHOW processlist来发现正在做什么:
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| 6 | monty | localhost | bp | Query | 15 | Sending data | select * from station,station as s1 |
| 8 | monty | localhost | | Query | 0 | | show processlist |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
在mysql或mysqladmin中用KILL来杀死溜掉的线程

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Solana区块链和SOL代币Solana是一种专注于为去中心化应用程序(dApps)提供高性能、安全和可扩展性的区块链平台。SOL代币作为Solana区块链的原生资产,主要用于支付交易手续费、质押和参与治理决策。Solana的独特之处在于其快速的交易确认时间和高吞吐量,使其成为开发者和用户青睐的选择。通过SOL代币,用户可以参与Solana生态系统的各种活动,并共同推动平台的发展和进步。Solana的工作原理Solana采用一种创新的共识机制,被称为历史证明(PoH),能够有效处理数千笔交易。

SpringDataJPA基于JPA架构,通过映射、ORM和事务管理与数据库交互。其存储库提供CRUD操作,派生查询简化了数据库访问。此外,它使用延迟加载,仅在必要时检索数据,从而提高了性能。

VET币:基于区块链的物联网生态系统VeChainThor(VET)是一种基于区块链技术的平台,旨在通过确保数据的可信性和实现价值的安全转移来提升物联网(IoT)领域的供应链管理和业务流程。VET币是VeChainThor区块链的原生代币,具有以下功能:支付交易费用:VET币用于支付VeChainThor网络上的交易费用,包括数据存储、智能合约执行和身份验证。治理:VET币持有者可以参与VeChainThor的治理,包括对平台升级和提案进行投票。激励:VET币用于激励网络中的验证者,以确保网络的

Beam币:注重隐私的加密货币Beam币是一种专注于隐私保护的加密货币,旨在提供安全且匿名的交易。它采用了MimbleWimble协议,这是一种区块链技术,通过合并交易和隐藏发送者与接收者的地址来增强用户的隐私保护。Beam币的设计理念是为用户提供一种能够确保交易信息保密的数字货币选择。通过采用这种协议,用户可以更加放心地进行交易,而无需担心他们的个人隐私信息被泄露。这种隐私保护的特性使得Beam币Beam币的工作原理MimbleWimble协议通过以下方式增强隐私:交易合并:它将多个交易组合成

ShibaInu币:以狗狗为灵感的加密货币ShibaInu币(SHIB)是一种去中心化的加密货币,灵感源自于其标志性的柴犬表情包。该加密货币于2020年8月推出,旨在成为以太坊网络上的一种替代狗狗币。工作原理SHIB币是建立在以太坊区块链上的数字货币,符合ERC-20代币标准。它运用去中心化共识机制,即权益证明(PoS),这使得持有者可以通过抵押他们的SHIB代币来验证交易,并从中获得奖励。主要特点庞大的供应量:SHIB币的初始供应量为1000万亿枚,使其成为流通量最大的加密货币之一。低价格:S

AR币:基于增强现实技术的数字货币AR币是一种数字货币,利用增强现实技术为用户提供与数字内容互动的体验,使他们可以在现实世界中创造身临其境的体验。工作原理AR币的工作原理基于以下关键概念:增强现实(AR):AR技术将数字信息叠加在现实世界中,使用户能够与虚拟对象进行交互。区块链:区块链是一种分布式账本技术,用于记录和验证交易。它为AR币提供安全性和透明度。智能合约:智能合约是存储在区块链上的代码,用于自动化特定操作。它们在AR币的创建和管理中发挥着至关重要的作用。AR币的工作流程如下:创建AR体

Polygon:构建以太坊生态系统的多功能区块链Polygon是一个建立在以太坊之上的多功能区块链平台,原名为MaticNetwork。其目标是解决以太坊网络中的可扩展性、高费用和复杂性问题。Polygon通过提供可扩展性解决方案,为开发者和用户提供更快速、更便宜、更简单的区块链体验。Polygon的工作原理如下:侧链网络:Polygon创建了一个由多个侧链组成的网络。这些侧链与以太坊主链并行运行,可以处理大量交易,从而提高整体网络吞吐量。Plasma框架:Polygon利用Plasma框架,这

Algorand:基于纯拜占庭共识协议的区块链平台Algorand是建立在纯拜占庭共识协议之上的区块链平台,旨在提供高效、安全且可扩展的区块链解决方案。这一平台由麻省理工学院的教授SilvioMicali于2017年创立。工作原理Algorand的核心在于其独特的纯拜占庭共识协议,即Algorand共识。这个协议允许节点在不信任的环境中实现共识,即使网络中存在恶意节点。Algorand共识通过一系列步骤来实现这一目标。密钥生成:每个节点生成一对公钥和私钥。提议阶段:一个随机选择的节点提议一个新区
