mysql8支持myISAM_mysql8 参考手册--优化MyISAM表

MyISAM存储引擎在以读为主的数据或低并发操作中表现最好,因为表锁限制了同时执行更新的能力。在MySQL中,InnoDB是默认的存储引擎,而不是MyISAM。

优化MyISAM查询

一些加快MyISAM表查询的一般技巧 :

为了帮助MySQL更好地优化查询,可以使用ANALYZE TABLE或运行--analyze 在加载了数据的表上进行分析。这将更新每个索引部分的值,该值指示具有相同值的平均行数。(对于唯一索引,始终为1。)MySQL使用此选项来决定在基于非常量表达式连接两个表时选择哪个索引。通过使用SHOW INDEX from tbl_name并检查基数值,可以检查表分析的结果。myisamchk--description--verbose显示索引分布信息。

要根据索引对索引和数据进行排序,请使用 myisamchk --sort-index --sort-records = 1 (假设您要对索引1进行排序)。如果您有一个唯一的索引,要根据该索引按顺序读取所有行,这是使查询更快的一种好方法。第一次以这种方式对大表进行排序可能会花费很长时间。

尝试避免SELECT 对MyISAM频繁更新的表进行复杂的查询,以避免由于读取器和写入器之间的争用而发生的表锁定问题。

MyISAM支持并发插入:如果表在数据文件的中间没有空闲块,则可以INSERT在其他线程从表读取数据的同时向其中添加新行。如果能够做到这一点很重要,请考虑以避免删除行的方式使用表。另一种可能性是运行OPTIMIZE TABLE到整理表你已经删除了很多这行之后。通过设置concurrent_insert变量可以更改此行为 。您甚至可以在已删除行的表中强制添加新行(并因此允许并发插入)。请参见第8.11.3节“并发插入”。

对于MyISAM表经常变化的,尽量避免所有变长列(VARCHAR, BLOB,和 TEXT)。如果该表甚至只包含一个可变长度的列,则使用动态行格式。请参见第16章,备用存储引擎。

通常,仅由于行变大而将表拆分为不同的表是没有用的。在访问一行时,最大的性能损失是查找该行第一个字节所需的磁盘搜索。找到数据后,大多数现代磁盘可以以足够快的速度读取整个行,以适合大多数应用程序。拆分表的唯一情况是MyISAM,可以更改为固定行大小的表是使用动态行格式的 表,还是经常需要扫描表但不需要大多数列的表。请参见第16章,备用存储引擎。

通常用于按顺序检索expr1, expr2, ...行时 使用ALTER TABLE ... ORDER BYexpr1, expr2, ...。通过在对该表进行大量更改之后使用此选项,您可能可以获得更高的性能。

如果您经常需要基于大量行中的信息来计算结果(例如计数),则最好引入一个新表并实时更新计数器。以下表格的更新非常快:

UPDATE tbl_name SET count_col=count_col+1 WHERE key_col=constant;

当您使用MySQL存储引擎(例如MyISAM仅具有表级锁定(具有单个编写器的多个读取器))时,这非常重要。这也使大多数数据库系统具有更好的性能,因为在这种情况下,行锁定管理器的工作量减少了。

OPTIMIZE TABLE 定期 使用以避免动态格式MyISAM表的碎片化 。请参见 第16.2.3节“ MyISAM表存储格式”。

MyISAM使用 DELAY_KEY_WRITE=1table选项 声明表可以使索引更新更快,因为在关闭表之前,它们不会刷新到磁盘。不利的一面是,如果在打开此类表时某些东西杀死了服务器,则必须通过myisam_recover_options 设置系统变量集运行服务器,或者在重新启动服务器之前运行 myisamchk来确保该表正常 。(但是,即使在这种情况下,也不要通过使用来丢失任何内容DELAY_KEY_WRITE,因为密钥信息始终可以从数据行中生成。)

字符串会在MyISAM索引中自动压缩前缀和结尾空间。请参见 第13.1.15节“ CREATE INDEX语句”。

您可以通过在应用程序中缓存查询或答案,然后一起执行许多插入或更新操作来提高性能。在此操作期间锁定表可确保索引缓存在所有更新之后仅刷新一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python的模块提供了许多文件处理方法_详解使用Python处理文件目录的相关方法

所有文件都包含在各个不同的目录下,不过Python也能轻松处理。os模块有许多方法能帮你创建,删除和更改目录。mkdir()方法可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。语法:os.mkdir…

mysql替换json的key_mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换...

需求描述:在看mysql中关于json的内容,通过json_replace函数可以实现对json值的替换,在此记录下.操作过程:1.查看带有json数据类型的表mysql> select * from tab_json;-------------------------------------------------------------------------------------------| id | d…

python中的array函数作用_Python中的Array | 数组2(简介和功能)

相关文章:Python中的数组Array | 1(简介和功能)以下是更多函数。1. typecode:此函数返回初始化数组所用的数据类型。2. itemsize:此函数返回单个数组元素的大小(以字节为单位)。3. buffer_info():返回一个元组,表示存储…

java生成pdf_JAVA 生成PDF 并导出

/***首先啥也不干,先写一个转换中文的方法,话说谁要整一个全英文数字的就不* 要写这个方法了....*str :要转换的内容 c:字体大小*/private static Paragraph getChinese(String str,int c) throws DocumentException, IOException{ BaseFont …

python爬取今日头条的文章_Python3爬取今日头条有关《人民的名义》文章

Python3爬取今日头条有关《人民的名义》文章最近一直在看Python的基础语法知识,五一假期手痒痒想练练,正好《人民的名义》刚结束,于是决定扒一下头条上面的人名的名义文章,试试技术同时可以集中看一下大家的脑洞也是极好的。首先&…

java jmeter_使用Jmeter中的Java Request进行性能测试

在使用jmeter进行性能测试的时候,有可能会需要通过一些脚本去测试性能,(比如通过sokeeper的api去测试sokeeper的读写性能)。这时,我们可以通过Java Request实现,以下是操作步骤。首先创建一个maven project。因Jmeter的Java Reque…

python虚拟环境 pyenv_Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别

请参考连接 https://blog.zengrong.net/post/2167.htmlhttps://blog.csdn.net/lanonjj/article/details/51050212为避免链接失效,把原文做了复制黏贴另外在python3.6中,虚拟应该用如下命令创建python3 -m venv /path/to/new/virtual/environment直接用py…

java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

注意两点:1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中。2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取。例子新建一个 maven 目录App.java 用于读取 resources 中的 a.txt 内容…

m.2接口和nvme区别_m.2 nvme和m.2有区别吗?

m2接口有两种,一种走sata的,另外一种走pcie(就是nvme)的。走sata的速度跟传统sata接口的没区别,就是接口变成了m2的了。走pcie的,就是我们说的nvme接口是m2的,性能也强了。M.2接口有SATA也有NVMe PCIe协议。这个是同一…

python编程软件排行榜_Python编程开发工具:这10个对Web开发者最有用的Python包

Python编程一时间成为了开发人员最喜欢的语言之一。无论是专业的,业余的,还是作为一个Python初学者,都可以从Python编程语言及其程序包中受益。Python已经被证明是当今最具活力的面向对象的编程语言之一。这就是为什么即使是一些很优秀的公司…

java excel 字体大小_Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...

/*** 按列写入Excel并设置格式**paramoutputUrl* 输出路径*paramsheetName* 工作薄名称*paramtitles* 表头*paramarrayList* 表头数据*throwsIOException*throwsRowsExceededException*throwsWriteException*/public static voidwriteExcel(String outputUrl, String sheetName…

如何查看cplex的help文档_word查看技巧:如何快速找到文档的修改痕迹

不知道大家在工作中有没有遇到过这类的工作场景:当初步拟好一份合作协议或是项目策划书后,发给老板或其他同事审阅和修订,通常会不断地来回修改文档。此时,如果你想要查看文档哪里被修改过?你会怎么操作?很…

java将数字替换为空_将数字替换为java中正确位置的单词

实际上我正试图用用户给出的句子中的数字替换为单词.本案例日期格式;例如:我的生日是在16/6/2000,我是java的新手 – >成为—>我的生日是七月十六日,我是java的新手这是代码:Scanner reader new Scanner(System.in);System.out.println("Ent…

java重载this_Java的this关键字的使用与方法的重载相关知识

Java this关键字详解this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。例如:public class Demo{public int x 10;public int y 15;public void sum(){// 通过 this 点取成员变量int z this…

python 类和对象 经常用吗_python基础教程之对象和类的实际运用

我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。调用类的其它信息中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性…

java get properties_Java.lang.System之getProperties()方法

Environmentjava.vm.version——>25.60-b23java.vm.vendor——>Oracle Corporationjava.vendor.url——>http://java.oracle.com/idea.launcher.port——>7533java.vm.name——>Java HotSpot(TM) 64-Bit Server VMfile.encoding.pkg——>sun.iouser.country—…

mysql set语句_MySQL Prepared语句简介

之前的MySQL版本4.1,查询以文本格式发送到MySQL服务器。 之后,MySQL服务器使用文本协议将数据返回给客户端。MySQL必须完全解析查询,并将结果集转换为字符串,然后再将其返回给客户端。 文本协议具有严重的性能问题。为了解决这个问…

java resultset close_java代码ResultSet is closed

我用的Eclipse开发工具写java代码,连接的是SQLServer2000。提示ResultSetisclosed代码如下:privatestaticvoidgetDBConnection(){try{Class.forName(strName);connDriverManager.ge...我用的Eclipse开发工具写java代码,连接的是SQL Server 20…

三同轴连接器_一种毫米波频段微带同轴转换结构

在微波电路中,同轴电缆和微带线是微波系统中常见的两种微波传输线,同轴电缆以其频带宽、屏蔽性好、结构简单、可弯曲等特性,常被用作模块或系统之间连接的传输线。在高频段,微带线是混合微波集成电路(Hybrid Microwave Integrated…

java rhino 运行 js_Mozilla Rhino :如何从Java调用JS函数

小编典典String script “function abc(x,y) {return xy;}”;Context context Context.enter();try {ScriptableObject scope context.initStandardObjects();Scriptable that context.newObject(scope);Function fct context.compileFunction(scope, script, “script”,…