今天问了老师有关docker的问题,entrypoint和cmd的区别,两者同时存在cmd的执行结果会被当做参数传入entrypoint。
dockerfile中,从别人拉一个dockerfile,run等命令都是继承的,但是entrypoint和cmd不是继承的,是覆盖式的,最好不要覆盖这两个文件,如果需要修改,可以在官方原有entrypoint中提供的docker-entrypoint.sh中添加自己的需求。
在mysql的镜像中,我们需要执行的一个SQL文件,可以直接放在/docker-entrypoint-initdb.d/下面直接会执行,最好不要用自己的sh去覆盖官方的docker-entrypoint.sh等,需要修改也最好在官方的基础上修改。
理解驱动表:小结果集驱动大结果集
优化第一步:LEFT JOIN改为JOIN尽量不要根据非驱动表的字段排序优化第二步:去除所有JOIN,让MySQL自行决定!不要把MySQL的存储过程和触发器视为洪水猛兽,用好的话,没有问题的,真遇到问题了再优化也不迟。另外,MySQL因为没有物化视图,因此视图能不用就尽量少用吧。
其实从5.6开始,建议优先选择DATETIME存储日期时间,因为它的可用范围比TIMESTAMP更大,物理存储上仅比TIMESTAMP多1个字节,整体性能上的损失并不大。
所有字段定义中,默认都加上NOT NULL约束,除非必须为NULL(但我也想不出来什么场景下必须要在数据库中存储NULL值,可以用0来表示)。在对该字段进行COUNT()统计时,统计结果更准确(值为NULL的不会被COUNT统计进去),或者执行 WHERE column IS NULL 检索时,也可以快速返回结果。
尽可能不要直接 SELECT * 读取全部字段
老叶观点:MySQL开发规范之我见: (推荐)
“冒泡排序”在某些情况下(大多数数据是排好序的)其效率会高于所有的排序算法。
字符串操作很费性能,无论是strcpy, strcat还是strlen,能用整型最好用整型。
为查询缓存优化你的查询
-- 查询缓存不开启 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存 $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); -- 开启查询缓存 用一个变量来代替MySQL的函数 $today = date("Y-m-d"); $r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'"); EXPLAIN 你的 SELECT 查询当只要一行数据时使用 LIMIT 1为搜索字段建索引永远为每张表设置一个ID,好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。优化建议
可以存下我们数据的最小数据类型使用简单的数据类型,int类型要比varchar类型,mysql处理更简单尽量使用not null字段,因为innodb存储类型,尽量设置默认值尽量少用text类型,非用不可的话需要考虑是否分表的方式解决。建议总是要在SQL中使用基表,而不是视图。
数据库不建立外键,外键在业务层实现
id不要用UUID
Mysql有自动增长的数据类型 auto_increment ; Oracle 没有自动增长的数据类型,需要建立一个序列 SEQUENCE;
Mysql 中 group by 在select 语句中可以随意使用; Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的或者是group by 子句中的列,否则报错;
Mysql中单双引号均可; Oracle以单引号包裹字符串,双引号包裹别名。
下载instantclient-basic和instantclient-sqlplus,注意选择合适的版本和平台,然后解压到同一个文件夹下,然后配置tns,在文件夹下建一个tnsname.ora文件,如下配置。然后配置tns环境变量位置,具体百度,这个Navicat和plsql develop登录需要配置的监听。
winXP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.70)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )配置sqlplus的环境变量,然后sqlplus student1/student1@192.168.15.70:1521/orcl登录,注意需要有权限,需要提前授权然后才能生成awr报告,然后@+你的awrrpt.sql文件生成awr报告,默认在c盘你的用户目录下。 sqlplus system/oracle@192.168.99.100:1521/xe
转载于:https://www.cnblogs.com/sufferingStriver/p/9403474.html
相关资源:Drupal 7.31最新SQL Injection漏洞利用脚本支撑库文件