SQL Server Short-notes at JustETC #38

How to optimize query response time?

How to optimize SQL Server Cursors

What are cursors?

SQL Server Hints

Scalability: SQL Server 2005

Scaling Out

Dynamic Management Views

SQL Server Database System Tuning

SQL Server: Index

SQL Server : Backups

SQL Server Short-notes at JustEtc

SQL Server Short-notes at JustEtc

From: http://sitestree.com/?p=5257
Categories:38
Tags:
Post Data:2009-08-28 05:17:15

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

SQL Server Short-notes at JustEtc #38

Query Optimization

How to optimize query response time?

SQL Server

How to optimize SQL Server Cursors

What are cursors?

SQL Server Hints

Scalability: SQL Server 2005

Scaling Out

Dynamic Management Views

SQL Server Database System Tuning

SQL Server: Index

SQL Server : Backups

From: http://sitestree.com/?p=5221
Categories:38
Tags:
Post Data:2012-10-04 19:57:27

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

How to optimize query response time? #38

  • Check that only the required columns are selected [in select statements]
  • Check that the right types of joins are used
  • Check that if re-ordering the joins will help or not
  • Check the indexes of the tables [is indexing done on the right columns]
  • Check that in joins you used the indexed columns in the join condition
  • Check that the operating system is configured for optimum performance [for SQL Server]
  • Use concepts like Scaling Up and Scaling Out to increase the overall performance of queries/SQL Server
  • Use Dynamic Management Views to analyze the query performance/(query execution plans)
  • Use hints to skip default query execution plan to introduce your plan for quick response. Use hints on join types or also for table index selection
  • Check that the system and the network are appropriately configured and there are no issues that can cause the performance penalty
  • Tools that may help in the analysis and improvement: DBCC Commands, Dynamic Management Views, SQL Server Profiler, SQL Server Management Studio, System Stored Procedures, and SQL Trace
  • Check these articles for more information

From: http://sitestree.com/?p=5087
Categories:38
Tags:
Post Data:2013-01-20 11:22:32

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

SQL Server : Backups #38

Why are backups needed?

To protect accidental data loss. Still, if you use highly available and fault-tolerant systems like SAN, and RAID, you may need to backup your database regularly. These fault tolerant systems can not provide accidental data delete by users, accidental data corruption from software and hardware failure. If you have a disaster recovery site or a secondary datacenter to where all data are replicated and data changes are stored, then you may not need backup but otherwise regular backups are always useful.

Data backup can restore data until the last backup. . Transaction Logs may help to restore data up to the point of failure. Restore data from the data backup, then if you have the transaction log up to the failure apply it to the data.

SQL Server Recovery Models:

  • Simple Recovery Model. Transaction logs are not used
  • Full Recovery Model: Use both data and transaction log backups
  • Bulk-logged recovery model: Like full recovery model. But here bulk operations are minimally logged to the transaction log. So full recovery becomes faster.

Types of Backups

  • Full database backup: Full database, all files and file groups are backed up
  • Partial Back up: It’s not the differential backup. Here, all primary file groups and any other file groups that are read-write are backed up. But read-only file groups are not backed up by default.
  • File or file group backup: Usefull when full back ups take too long. Backup in parts.
  • Differential back up: Backup only the changes. Should be applied to a full backup.
  • Log backup: In log back ups, transaction logs are backed up regularly. It helps in bulk logged recovery model and full recovery model.
  • Copy only backups:
  • Full text catalog backups

Knowing about backup devices, media sets, and backup history tables is also important.

Mirrored Media Sets: Backup data to more than one media at the same time.

Backup Strategy:

Based on your company need and type of data, you should come up with a backup strategy.

Some backup strategies

Strategy – 1

  1. Take full database backup every saturday night
  2. Take a differential backup every wednesday night
  3. Perform, continual transaction log backups every 30 minutes

Strategy – 2: If the database is too big, and user activities need continuous uptime and optimal performance

  1. Filegroup 1 backup every saturday night
  2. Filegroup 2 backup every sunday night
  3. File group 1 differential backup every Tuesday night
  4. File group 2 differential backup every wednesday night
  5. File group 1 differential backup every Thursday night
  6. File group 2 differential backup every Friday night
  7. Perform, continual transaction log backups every 30 minutes

Backup System Databases

It is also important to back up system databases like master, model, msdb, tempdb, distribution, resource.

From: http://sitestree.com/?p=4837
Categories:38
Tags:
Post Data:2011-02-01 01:27:56

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

SQL Server: Index #38

SQL Server: Index

  • Indexes make database access faster. Without index your queries will run but indexes can increase the performance dramatically.
  • You can define multiple indexes for a table and select the index that is required for current operations.
  • Only one clustered index is supported for a table
  • To get advantage of indexes you have to mention the index related constraints in your where clause like where last_name =’xyz’
  • If you have indexes on two or more columns, in where clause mention the first column name/constraint first [that was first in the index creation].
  • A clustered index contains table data sorted in the index where a non-clustered index contains reference to the table data or clustered index. Non-clustered indexes are both physically and logically independent of table data.

Index Best Practices

  1. Select a column/(columns) for indexes that will provide good uniqueness and selectivity otherwise indexing may degrade the performance
  2. Create indexes that result in lower number of rows to be searched
  3. Create indexes that select a range of rows
  4. Try to create clustered index with as uniqueness as possible
  5. Keep indexes as narrow as possible (not many/unnecessary columns)
  6. Don’t index very small table

In SQL server, you can create indexes through your sql statements or using the development studio interface.

From: http://sitestree.com/?p=4836
Categories:38
Tags:
Post Data:2011-01-21 05:26:33

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

SQL Server Database System Tuning #38

Database tuning approach

  • Proactive approach
  • Reactive approach

Best Approach: Use a mix of both.

Be aware (collect information) of the followings that may have significant impact on the performance.
Hardware: Server, Available memory, number of processors, disk subsystems.

Network Infrastructure: Network Cards, Switches, and the rest of your LAN and WAN.

Operating System: Make sure the OpSys is optimally configured for SQL Server.

Database Engine: Know about the SQL Server Architecture and about your operational environments.

Database: Tune database properly

Client Connection: How clients connect to the server

Monitoring and Tuning Hardware: Use Network Monitor Agent, Performance Logs and Alerts, System Monitor, and Task Manager.

System monitor (perfmon.exe) is a great tool for the purpose Using perfmon.exe you can also find where the bottleneck is Processor Subsystem, Memory Subsystem, I/O Subsystem

Monitoring and Tuning SQL Server:Tools:

  • DBCC Commands
  • Dynamic Management Views
  • SQL Server Profiler
  • SQL Server Management Studio
  • System Stored Procedures
  • SQL Trace

System Monitor: when SQL server is installed many new parameters (performance objects and their counters) are added to System Monitor (perfmon.exe) that help to monitor SQL Server performance.

SQL Server Profiler: This tool is used to capture traces like client activities, stored procedure calls, lock activities. SQL server profiler can help to determine if the client application is at fault.

SQL Trace: create traces using using stored procedures.

Tuning the tempdb system database

  • Capacity plan and pre-allocate adequate space
  • Separate the log file from the database file
  • Use multiple secondary files for the tempDB system database
  • Use a faster disk
  • Use an appropriate RAID solution.
  • Use local disk sybsystem for tempdb.

Tuning Database Layout

Use file and filegroup architecture properly.
File: Use multiple data files for your databases.

Filegroups:example: create two file groups and place them in different drives. Create tables in one file group and create non-clustered indexes in the other. table I/O and Index I/O are now divided.

From: http://sitestree.com/?p=4810
Categories:38
Tags:
Post Data:2012-08-07 00:06:40

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

Dynamic Management Views #38

Dynamic Management Views provide ways to analyze database performance and to find the cause behind bad-performing SQL server databases/instances. Bad performance can be due to: poor design, insufficient memory, poorly configured system, disk bottlenecks, poorly written queries and many others

Previously Windows System Monitor(perfmon.exe) and SQL server profiler were used to find the cause of bad-performance. Now, Dynamic Management Views can help a lot better.

Dynamic Management Views are categorized into 12 categories

  • Common language runtime:
  • Database: Provides details about database sizes, files used, and partition information.
  • Database mirroring related: About mirroring and mirroed databases
  • Execution related: Provides insight into query execution statistics.
  • Full text search: Provides information on full-text catalogs, indexes, full-text crawl memory buffer
  • Input/Output Related: Provides insights into I/O operations, I/O devices, and database file statistics.
  • Index related: Database file statistics
  • Query notification related: Insights into active query notifications subscriptions in the server
  • Replication related: Insights into the workings of replication in the database
  • Service Broker Related: Insights into the workings of Service Broker
  • Sql server operating system related: Insights into the internal operations of the SQL Server OS.
  • Transaction Related: Insights into the operations of active transactions

Performance Data Warehouse: A historical archive of periodic snapshots of the DMV data of interest. How can it help? the problem may occur only at night 3:00 a.m. and when there are not many users. If you want to fix the issue in the morning Performance Data Warehouse will be of great help.

From: http://sitestree.com/?p=4809
Categories:38
Tags:
Post Data:2008-12-05 20:21:03

    Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
    (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
    In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
    <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
    8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
    Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
    Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>

Scaling Out #38

Methods

  • SQL Server instances
  • Clustering
  • Database mirroring
  • Log shipping
  • Replication
  • Shared scalable databases
  • SQL Server instancesIn the same computer install multiple instance of SQL Server to take advantage of multiple processors. Each instance may use separate processor with separate lock manager, worker threads, tempdb system database.
  • ClusteringFailover Clustering can provide robustness and protection against failure. Clustering can provide scaling using spare hardware through passive nodes
  • Database mirroringWith database mirroring transaction logs are directly sent to the mirror. The mirror is up to date and can be used in case of failure of the principle server.
  • Log shippingIt depends on the transaction log backups, file copying. The secondary database need not to be updated in real time. The secondary database is read only and hence, be in great use for reporting purposes.
  • ReplicationMerge Replication: Both way, both from and to publishers and subscribers
    Transactional Replication: Publisher to the subscriber
  • Shared scalable databasesScale out a read-only database only for reporting purposes.
  • From: http://sitestree.com/?p=4806
    Categories:38
    Tags:
    Post Data:2007-05-23 02:02:25

        Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
        (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
        In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
        <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
        8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
        Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
        Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>
    

    Scalability: SQL Server 2005 #38

    Scalability: SQL Server 2005

    After you have optimized your database design and the application design, you can improve the scalability of SQL Server in two ways
    1.Scaling Up
    2.Scaling Out

    Scaling Up: Improve performance by
    1. Adding more processors, memory, and storage capacity

    2. Replacing existing hardware with faster hardware

    Note: You also need the right version of SQL Server so that scaling up is supported.

    How to scale up Processors:
    SQL Server is mostly I/O bound not CPU bound, still better/faster CPU usually provides better performance [depends on the application need though].

    Processor choices:32 bit
    64 bit x64
    64 bit IA64
    Hyperthread technology
    Multiprocessor based server
    Multicore based servers

    It is always better to go for 64 bit than 32 bit as it will also support more memory. 64 bit x64 processors provide better performance than ia64 however if your work requires lots of floating point operations and the workload needs > 8 processors you can think about IA64 processors

    Multiple processor systems provide better performance than the single processor systems. Windows implements SMP architecture of parallel computing and SQL Server 2005 also takes advantage of it.

    Multiple processor systems usually performs better than the equivalent multicore uniprocessor systems.

    Intel’s hyperthreading technology may increase performance (10-20%) based on the applications (but not always)

    Memory Subsystem:
    As SQL server is I/O bound using more memory almost always increases performance. Though the amount of memory that we can add depends on the operating systems. 32 bit operating systems supports 4GB RAM max. For 32 bit windows 2 GB is reserved for operating system, in Windows Server 2003 we can specify 1 gb for operating system so getting 3gb for SQL Server.

    32 bit SQL Servers can address 4 gb ram, the actual ram amount depends on the operating system used. if 32 bit windows then 2 to 3 gb max as mentioned before

    When 64 bit windows and 64 bit sql server then physical memory limits 32TB.

    I/O SubSystems:
    You can improve disk I/O subsystem by using an appropriate RAID array or SAN (Storage Area Network) solution

    Using Network Interface Card (NIC) teaming, you can also improve performance. NIC teaming allows to bond multiple physical NICs into one logical network device. Teaming provides load balance, fault tolerance, and high bandwidth.

    Scaling Out will be discussed later.

    Scaling Out involves using multiple SQL servers to provide increased scalability.

    From: http://sitestree.com/?p=4804
    Categories:38
    Tags:
    Post Data:2008-04-28 01:08:59

        Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
        (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
        In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
        <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
        8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
        Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
        Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>
    

    SQL Server Hints #38

    SQL Server Hints
    ----------------
    What are hints?
    
    Simply to influence query execution plans to retrieve data 
    faster.
    
    syscacheobjects
    ----------------
    SQL server after compiling a query creates the execution 
    plan and keeps it on syscacheobjects object.
    You can query the object to see the existing query plans as 
    follows:
    
    select * from sys.syscacheobjects
    where cacheobjtype='compiled plan'
    
    
    Hints
    -----
    
    When you specify hints in your queries the query execution 
    plans are biased toward your hints rather than using default
     strategies.
    
    Types of Hints
    --------------
    Join Hints: Affects the joins [join types]
    Query Hints: Affects overall execution plan
    Table: Affects to table access 
    
    
    Join Hints
    ----------
    Loops: Uses nesting for join. Each row of the inner table is
     checked for condition satisfaction with the corresponding 
    outer row.
    Hash: One table is treated as a hash table and the other is 
    scanned one row at a time and the hash function is used to 
    find equalities
    
    Merge: Each table is sorted first. Then they are compared 
    row by row [corresponding]
    
    Remote: In this case, at least one table is remote. The join
     is done at the right table side.
    
    
    Example:
    
    select *
    -----
    ----
    ---
    option (merge join)
    
    
    or
    
    select * 
    from x
    inner merge join y on...
    
    
    Query Hints:
    ------------
    Specified at the end of the query with keyword 'Option'
    
    
    select * from x
    ------------
    ------------
    option (recompile, fast 80)
    Hash Group or Order groups:  Aggregations (group by, compute, distinct) are done by hashing or ordering
    Concat Union, Hash Union, Merge Union: All unions will be done with the specified union type
    Loop Join, Hash Join, Merge Join: Joins will be done with the specified join types
    FAST number_rows:
    Force Order:
    MaxDop:
    Optimize For:
    Recompile:
    Keep Plan:
    Expand Views:
    
    
    
    Table Hints:
    ------------
    Affects how the table will be locked or which index will be 
    used for the query.
    NoEXPAND
    INDEX
    fastfirstrow
    nowait
    rowlockpaglock
    tablock
    nolock
    holdlock
    ignore_triggers
    
    
    Plan Guides
    -----------
    Sometimes queries are originated from a third part application and you have no control to change the query.
    You can use plan guides to influence such queries. For example: Using plan guides you can specify the nature of the
     select, update, insert queries.
    You can use built in stored procedures to create or drop 
    plan guides.
    
    sp_create_plan_guide
    sp_control_plan_guide
    

    From: http://sitestree.com/?p=4800
    Categories:38
    Tags:
    Post Data:2007-12-13 01:33:56

        Shop Online: <a href='https://www.ShopForSoul.com/' target='new' rel="noopener">https://www.ShopForSoul.com/</a>
        (Big Data, Cloud, Security, Machine Learning): Courses: <a href='http://Training.SitesTree.com' target='new' rel="noopener"> http://Training.SitesTree.com</a> 
        In Bengali: <a href='http://Bangla.SaLearningSchool.com' target='new' rel="noopener">http://Bangla.SaLearningSchool.com</a>
        <a href='http://SitesTree.com' target='new' rel="noopener">http://SitesTree.com</a>
        8112223 Canada Inc./JustEtc: <a href='http://JustEtc.net' target='new' rel="noopener">http://JustEtc.net (Software/Web/Mobile/Big-Data/Machine Learning) </a>
        Shop Online: <a href='https://www.ShopForSoul.com'> https://www.ShopForSoul.com/</a>
        Medium: <a href='https://medium.com/@SayedAhmedCanada' target='new' rel="noopener"> https://medium.com/@SayedAhmedCanada </a>